【问题标题】:Laravel link_to_route after namespace change命名空间更改后的 Laravel link_to_route
【发布时间】:2015-05-08 07:41:57
【问题描述】:

我正在根据教程制作一个基本的 CRUD 应用程序,但我意识到我想将这个功能隐藏在一个管理文件夹中。

该功能是一个博客管理系统(索引、创建、显示、删除等),所有这些都从 domain.com/blog 运行。

从那时起,我建立了一个用户系统和一个受保护的管理区域,因此决定将视图文件移动到管理文件夹中。

为了应对这种变化,我在这里询问并被指示将我的资源路由包装在此:

Route::group(array('before' => 'is_admin', 'namespace' => 'admin', 'prefix' => 'admin'), function()
  Route::resource('blog', 'BlogController');
});

然后将我的 BlogController 移动到我的控制器文件夹中的管理文件夹中,然后将命名空间添加到该控制器:

namespace Admin;

并在 BaseController 之前添加一个反斜杠。

这里的这一行:

return View::make('admin/blog.index', compact('blogs'));

导致错误,所以我不得不在 View:: 之前添加一个反斜杠:

return \View::make('admin/blog.index', compact('blogs'));

我如何不必对所有课程都这样做?

然后一旦没问题,我的索引文件包含:

{{ link_to_route('blog.create', 'Add new blog') }}

返回未定义的路由错误...我哪里出错了?资源路线应该肯定会赶上这些路线等吗?似乎需要做很多工作才能让 BlogController 在管理目录中工作......

【问题讨论】:

    标签: php laravel laravel-4 namespaces


    【解决方案1】:

    这就是命名空间的工作方式。你可以import namespaces加:

    use View;
    

    现在您可以在文件的其他位置只使用View 而不是\View,因此文件的开头应如下所示:

    <?php namespace Admin;
       use View;
    

    但是您需要将此添加到您移动到命名空间Admin 的每个文件中;

    您也可以阅读How to use objects from other namespaces and how to import namespaces in PHP 以更好地理解它。

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多