如何在Laravel 5中为不同的路由前缀指定不同的视图路径

时间:2015-06-17 10:30:18

标签: laravel-5

我的routes.php

Route::controllers([
                   'auth' => 'Auth\AuthController',
                   'password' => 'Auth\PasswordController',
               ]);
// Frontend
Route::get('/', 'IndexController@index');
Route::get('/contact', 'UserController@index');
Route::get('home', 'HomeController@index');
Route::get('/articles', 'ArticleController@all');
Route::get('/article/{id}', 'ArticleController@show')
     ->where('id', '\d+');
Route::get('/messageboard', 'MessageController@messageboard');
// End Of Frontend

// Backend
Route::group(['prefix' => 'admin'], function () {
    Route::get('/article/create', 'Backend\PostController@create');
    Route::get('/article/edit/{id}', 'Backend\PostController@edit');
    Route::get('/signin', 'Backend\UserController@signin');
    Route::get('/signup', 'Backend\UserController@signup');
    Route::get('/user/{id}', 'Backend\UserController@ucenter');

    Route::post('/article/create', 'Backend\PostController@store');
    Route::post('/article/edit', 'Backend\PostController@update');
    Route::post('/article/del/{id}', 'Backend\PostController@del');
});

在添加新文件夹resources/views之前,我将视图文件放在resource/views/backend中;但是前端和后端都有2种不同的布局,所以我想组织更多的可读性。如下所示:

├── auth
│   ├── login.blade.php
│   ├── password.blade.php
│   ├── register.blade.php
│   └── reset.blade.php
├── backend
│   ├── article_create.blade.php
│   ├── layout.blade.php
│   └── sidebar_menu.blade.php
├── emails
│   └── password.blade.php
├── errors
│   ├── 404.blade.php
│   └── 503.blade.php
├── vendor
├── layout.blade.php
├── article.blade.php
├── articles.blade.php
├── home.blade.php
├── index.blade.php
├── messageboard.blade.php
├── sidebar_menu.blade.php
└── user.blade.php

通常我只是@extends('layout')而且它在前端工作正常

  

前端视图文件位于默认位置(resources/views

但是,我必须@extends('backend.layout')加载后端的布局!

  

后端的查看文件放在resources/views/backend

那么,有没有办法让我只用@extends('layout')加载后端布局模板?

我看到一些代码引用了' addNamesapce' ...

......英语不好......

修改的 也许我可以用另一种方式来实现我的想法。在laravel 5.2中,刀片模板可以使用@extend('layouts.frontend.app')扩展前端模板,@extend('layouts.backend.app')用于后端。

resources/views/layouts/frontend/app.blade.php

resources/views/layouts/backend/app.blade.php

这不是什么大不了的事。

2 个答案:

答案 0 :(得分:0)

我不知道你是否可以按照你想要的方式去做,但是你总是可以编辑config / view.php并将这一行添加到路径数组中:

realpath(base_path('resources/views/backend'))

您可以直接访问这些视图。在下方,您不能拥有2个具有相同名称的视图(您必须重命名后端内部的视图)。

答案 1 :(得分:0)

由于View Finder上的视图路径属性受到保护,因此您需要使用服务容器绑定:

[oldVC presentViewController:newVC animated:YES completion:^{ 

       [notificationCenter removeObserver:oldVC];

}];