我正在根据教程制作一个基本的 CRUD 应用程序,但意识到我想屏蔽管理文件夹中的功能。
该功能是一个博客管理系统(索引、创建、显示、删除等),这一切都来自 domain.com/blog。
从那时起,我建立了一个用户系统和一个 protected 管理区域,因此决定将 View 文件移动到一个管理文件夹中。
为了应对这种变化,我在这里询问并被指示将我的资源路线包装在这个:
Route::group(array('before' => 'is_admin', 'namespace' => 'admin', 'prefix' => 'admin'), function()
Route::resource('blog', 'BlogController');
});
然后将我的 BlogController 移动到我的 Controller 文件夹中的 admin 文件夹中,然后向该 Controller 添加一个命名空间:
namespace Admin;
并在 BaseController 之前添加一个反斜杠。
这条线在这里:
return View::make('admin/blog.index', compact('blogs'));
导致错误,所以我不得不在 View::之前添加一个反斜杠
return \View::make('admin/blog.index', compact('blogs'));
我如何不必为所有类(class)都这样做?
然后一旦没问题,我的索引文件包含:
{{ link_to_route('blog.create', 'Add new blog') }}
哪个返回未定义的路由错误......我哪里出错了?资源路线应该肯定会捕捉这些路线等吗?似乎有很多工作只是让 BlogController 在管理目录中工作......
最佳答案
这就是命名空间的工作方式。您可以 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更好地理解它。
关于php - 命名空间更改后的 Laravel link_to_route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903237/