Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macros Laravel5中的HTML宏放在哪里?_Macros_Laravel 5 - Fatal编程技术网

Macros Laravel5中的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

在laravel 4中,我曾经在多个视图中使用HTML宏,如:

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中对我很有效。谢谢。这让我发疯了。