我正在使用https://github.com/artesaos/seotools seo包。 我想覆盖位于https://github.com/artesaos/seotools/blob/master/src/SEOTools/SEOMeta.php的getCanonical函数,并使其输出为小写。你能指导我怎么做到这一点?如何覆盖Laravel包功能
回答
您可以尝试以下操作:
第1步:
创建扩展SEOMeta类的子类,并覆盖getCanonical
功能。
Class XyzSEOMeta extends SEOMeta {
public function getCanonical() {
// Write your logic here
}
}
步骤2:
创建重写类的服务提供。 bind
函数的第一个参数必须与SEOMeta
Facade(check here)的Facade存取器相同。在config/app.php
注册该门面后,服务提供商seotools包。 :
Class XyzSEOMetaServiceProvider extends ServiceProvider {
public function register(){
$this->app->bind('seotools.metatags', function(){
return new XyzSEOMeta($this->app['config']);
})
}
}
您已成功设置。希望这会有所帮助。
编辑:
以上提到的方法将只覆盖单个类。如果你想改变多个类的逻辑。最好的办法是分岔项目。更改代码并将其推送到您的分支。使用分叉的项目作为您的作曲家依赖项。按照链接了解如何使用私有存储库作为作曲家依赖项:https://getcomposer.org/doc/05-repositories.md#using-private-repositories
这很简单,就像我们重写派生类中的任何父类函数一样。
创建你自己的类并扩展你的包类SEOMeta并重新声明你想重写的函数,并把你的逻辑放在里面。不要忘记在你的自定义类的上层使用你的包类SEOMeta的命名空间。
现在在您的控制器中使用您的自定义类而不是包类。
例如 使用Path \ to \ SEOMeta;
类urclassname扩展SEOMeta {
公共职能overridemethodname(){
//把UR逻辑在这里。 }
}
伙计。这不是普通的班级。它是laravel的门面。 –
- 1. 如何覆盖包的功能?
- 2. 覆盖/覆盖功能内的功能
- 3. 如何覆盖功能?
- 4. 覆盖功能
- 5. 覆盖Object.length功能
- 6. 覆盖postLogin功能
- 7. 覆盖父功能
- 8. Firefox-Addon:我如何覆盖UI功能?
- 9. 如何覆盖UITableView的功能?
- 10. 如何覆盖网站的jQuery功能?
- 11. 如何覆盖主页键功能
- 12. 如何覆盖Yii核心功能?
- 13. 如何覆盖BlackBerry10的功能?
- 14. 如何覆盖默认功能
- 15. jqplot enhancedLegendRendrer seriesToggle功能覆盖
- 16. 覆盖原有功能
- 17. 使功能无法覆盖
- 18. ,它覆盖基础功能
- 19. Django覆盖默认功能
- 20. 覆盖功能迅速
- 21. 覆盖EditText选择功能
- 22. 覆盖模板类功能
- 23. OpenLayers覆盖功能编号
- 24. 覆盖功能参数/
- 25. AngularJs覆盖templateUrl功能
- 26. laravel sendFailedLoginResponse()覆盖
- 27. 覆盖Laravel RedirectResponse
- 28. 覆盖上下文。性能和功能
- 29. 如何覆盖Laravel Facade方法?
- 30. 如何覆盖laravel 4中的link_to_route?
非常感谢。你已经解释了这个方法很不错。 我遵循这种方法,仍然无法实现我的目的,看起来像它更复杂 – Mehdi
** getCanonical **方法已被调用与**生成**函数行128在同一类中。我复制过去并覆盖那还没有运气。 查看更深我发现**生成**功能已被称为下面的班级线123: https://github.com/artesaos/seotools/blob/master/src/SEOTools/SEOTools。php 能否请您进一步解释一下,我要走的路我可能最终会覆盖整个包... – Mehdi
我在我的视图中使用的包如下: ''{!! SEO :: generate()!!} 我在配置下有seotool.php,设置如下: '''canonical'=> null,//设置为空使用Url :: current()'' – Mehdi