如何在Laravel Voyager中创建自定义控制器

9

我在Voyager中非常新手。

在安装Voyager时,我已经获得了所有控制器TCG\\Voyager\\Http\\Controllers,但是没有找到使用BREAD创建的其他控制器。

此外,我想在我的Voyager管理面板中创建自定义控制器App\\Http\\Controllers\\Voyager。我也按照Youtube上的Voyager教程步骤来制作自定义控制器,但是无法创建。

有人可以帮忙吗?


你好!你有检查这个链接了吗?关于Voyager的自定义控制器? - wau
@ D. Erashkin ... 没有。 - raff
@D.Erashkin... 这不起作用。控制器仍未在 App\Http\Voyager 中创建。 - raff
它不会自动创建BREAD控制器。当您为模型创建/编辑BREAD时,可以设置控制器名称。 - wau
@D.Erashkin...那我不能在Voyager中创建自定义控制器吗? - raff
我认为你需要创建自定义的BREAD控制器,可以基于Voyager的BREAD控制器进行创建。(当你为某个模型创建BREAD时,Voyager不会生成/创建新的控制器。它使用VoyagerBreadController.php)。希望这能帮到你。 - wau
4个回答

14

在你的config\voyager.php文件中添加你的命名空间:

'controllers' => [
    'namespace' => 'App\Http\Controllers\Back',
],

然后将航天探测器控制器发布到您的命名空间

php artisan voyager:controllers

在该命名空间中创建一个继承自VoyagerBreadController的新控制器。

namespace App\Http\Controllers\Back;

use Illuminate\Http\Request;

class SchoolController extends VoyagerBreadController
{

然后您可以在面包编辑器中指定控制器。

注意:我不得不把我的称为Back \ SchoolController,而不是像我期望的那样只称为SchoolController。

在后端设置控制器


@FloatingKiwi......我已按您建议在命名空间中手动创建了控制器。但是如何在bread编辑器中指定所创建的控制器?是从“vendor\tcg\voyager\resources\views\bread\”吗? - raff
@raff - 它在前端的面包编辑器上。https://localhost/admin/database/schools/bread/edit - FloatingKiwi

3
更新: 从版本1.1开始,您现在需要扩展VoyagerBaseController而不是VoyagerBreadController

我已经创建了它,但是当我尝试编辑我的新面包时,我会得到“未定义变量:model_name”(视图:/var/www/html/myapp/vendor/tcg/voyager/resources/views/tools/bread/edit-add.blade.php)的错误提示。 - lucasvm1980

0

尝试这个:

  • composer dump-autoload
  • php artisan cache:clear
  • php artisan config:clear
  • php artisan view:clear
  • php artisan route:cache

请花点时间阅读[编辑帮助](//stackoverflow.com/editing-help)中的内容。在Stack Overflow上进行格式设置与其他网站不同。 - Kevin M. Mansour

0
将以下代码添加到你的模型中:

use Illuminate\Database\Eloquent\Builder;

protected static function boot()
    {
        parent::boot();
        static::addGlobalScope('order', function (Builder $builder) {
            $builder->orderBy('name', 'asc');
        });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接