命名空间更改后,Laravel link_to_route

时间:2015-03-06 16:31:14

标签: php laravel laravel-4 namespaces

我正在从教程制作一个基本的CRUD应用程序,但意识到我想掩盖管理文件夹中的功能。

该功能是一个博客管理系统(索引,创建,显示,删除等),这一切都来自domain.com/blog。

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

为了应对这种变化,我在这里询问并且被包围了我的资源路线:

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

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

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在管理目录中工作......

1 个答案:

答案 0 :(得分:0)

这就是名称空间的工作方式。您可以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来更好地理解它。