Macros Laravel5中的HTML宏放在哪里?
在laravel 4中,我曾经在多个视图中使用HTML宏,如:Macros Laravel5中的HTML宏放在哪里?,macros,laravel-5,Macros,Laravel 5,在laravel 4中,我曾经在多个视图中使用HTML宏,如: HTML::macro('minipics', function($pic) { // } 为此,我在/app文件夹中有一个macros.php文件。我找不到在laravel 5中放置宏的位置。我应该为此使用“macroable”功能吗 编辑: 我最终使用了@include(),为它提供了所需的值 @include('shared.minipics', $mpics = $ppics) @include('shared.m
HTML::macro('minipics', function($pic)
{
//
}
为此,我在/app
文件夹中有一个macros.php
文件。我找不到在laravel 5中放置宏的位置。我应该为此使用“macroable”功能吗
编辑:
我最终使用了@include()
,为它提供了所需的值
@include('shared.minipics', $mpics = $ppics)
@include('shared.minipics', $mpics = $randpics)
你可以用和《拉维4》一样的方法来做 将您的
macros.php
文件放在/app
文件夹中
然后在composer.json中执行此操作
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/macros.php" <-- Put this here
]
},
“自动加载”:{
“类映射”:[
“数据库”
],
“psr-4”:{
“App\\”:“App/”
},
“文件”:[
“app/macros.php”我已将我的宏移动到“resources/macros/…”目录中,因为我认为它们与所有其他与视图相关的代码都属于同一目录。要加载它们,我使用的服务提供商如下所示:
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class MacroServiceProvider extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
require base_path() . '/resources/macros/macro1.php';
require base_path() . '/resources/macros/macro2.php';
// etc...
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
我试图在宏文件中添加一个使用Html;
,但仍然得到“PHP致命错误:在/srv/…macros.PHP的第4行中找不到类'Html'。我必须以某种方式加载该类吗?是的-它在这里的升级指南中列出-向下滚动到“表单和Html帮助程序”我已经有了“表单和Html帮助程序”以前像在链接中一样安装。这已经起作用了。只有在我将“app/macros.php”添加到composer.json之后,当我运行composer update
时,我会看到一个白色屏幕,cli输出“php致命错误:在/srv/http/site5/app/macros.php的第3行中找不到类'Html'”。这就是为什么我认为,macros.php中可能缺少一些名称空间
或使用
。该类与别名数组和macros.php中的(Html
)相同,都有小写字母。该应用程序已命名,并且名称也出现在composer.json(psr-4)中。请尝试\Html::macro(“…
”更改为\Html::macro(“…
并移到下面的一行以查看它是否为“已读”,但是:php artisan optimize php致命错误:在第4行的/srv/http/site5/app/macros.php中找不到类“Html”:(composer dump autoload
不会抛出错误,但是composer update
与artisan命令相同的错误,如果在引导方法中使用以下命令:foreach(glob(base_path('resources/macros/*.macro.php')作为$filename){require_once($filename);}
您可以自动加载所有.macro.php文件,无需更新Provider。这种方法在Laravel 5.1中对我很有效。谢谢。这让我发疯了。