Jim*_*Jim 14 php static-classes laravel
在使用laravel框架时,如何在视图中调用base_controller中定义的函数.例如:
class Base_Controller extends Controller {
public static function format_something()
{
return something;
}
}
Run Code Online (Sandbox Code Playgroud)
如何在视图文件中调用format_something()?
通常我得到的错误看起来像这样:方法[link_to_action]没有在View类上定义.
可能是一个愚蠢的问题,但提前感谢!
编辑
好的!首先,做这样的事情的正确位置是在libraries文件夹中.第二,问题是你的班级不能有下划线.
所以在应用程序/库中我用class创建了AppHelper.php文件
class AppHelper {
public static function format_something()
{
return something;
}
}
Run Code Online (Sandbox Code Playgroud)
可以称之为:
$formated = AppHelper::format_something;
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助和良好的论坛找到Boofus McGoofus.
Laj*_*rek 21
对我来说工作:
创建目录"helpers"或其他任何文件:
// app/helpers/AppHelper.php
class AppHelper {
public static function format_something()
{
return something;
}
}
Run Code Online (Sandbox Code Playgroud)
添加composer.json的路径
// composer.json
"autoload": {
"classmap": [
"app/helpers" // <-------- add this line
]
},
Run Code Online (Sandbox Code Playgroud)
运行:(重新加载自动加载)
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
现在你可以打电话:
$formated = AppHelper::format_something();
Run Code Online (Sandbox Code Playgroud)
J.T*_*mes 10
这个答案是为Laravel 3编写的.对于Laravel 4及之后,LajdákMarek使用Composer的自动加载器的答案更好.
类似的功能format_something()不属于控制器.控制器应该只是从各种来源收集数据并将其传递给视图.它的工作主要是路由.
我已经在应用程序文件夹中为我的所有小函数创建了一个名为"helpers"的文件夹.为了确保我的所有控制器,视图和模型都可以访问它们,我在我的start.php文件中包含以下内容:
foreach(glob(path('app').'helpers/*.php') as $filename) {
include $filename;
}
Run Code Online (Sandbox Code Playgroud)
我怀疑有更好的方法可以做到这一点,但到目前为止,它对我有用.
| 归档时间: |
|
| 查看次数: |
14463 次 |
| 最近记录: |