首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel 5中为不同的路由前缀指定不同的视图路径

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

Stack Overflow用户
提问于 2015-06-17 10:30:17
回答 2查看 2.5K关注 0票数 0

我的routes.php

代码语言:javascript
复制
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中;但是对于前端和后端,我有两个不同的布局,所以我想组织更易读的文件。如下所示:

代码语言:javascript
复制
├── 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’.

...poor英语..。

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

代码语言:javascript
复制
resources/views/layouts/frontend/app.blade.php

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

这没什么大不了的。

EN

回答 2

Stack Overflow用户

发布于 2015-06-17 11:03:32

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

代码语言:javascript
复制
realpath(base_path('resources/views/backend'))

你就可以直接看到这些视图了。缺点是,不能有两个相同名称的视图(必须重命名后端中的视图)。

票数 0
EN

Stack Overflow用户

发布于 2016-06-29 20:10:37

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

代码语言:javascript
复制
Route::group(['prefix' => 'admin'], function () {
  $this->app->bind('view.finder', function ($app) {
    $paths = [realpath(base_path('resources/views/admin'))];
    return new \Illuminate\View\FileViewFinder($app['files'], $paths);
  });

  // ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30888938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档