首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >先进路由Laravel

先进路由Laravel
EN

Stack Overflow用户
提问于 2014-08-12 14:53:39
回答 1查看 511关注 0票数 0

目前,我有一个在Laravel中构建的简单的Laravel应用程序,它与database of Books交互。这是我的routes.php文件:

代码语言:javascript
复制
Route::model('book', 'Book');

//Show pages
Route::get('/', 'BookController@index');
Route::get('book/create', 'BookController@create');
Route::get('book/edit/{book}', 'BookController@edit');
Route::get('book/delete/{book}', 'BookController@delete');
Route::get('book/view/{book}', 'BookController@view');

//Handle form submissions
Route::post('create', 'BookController@handleCreate');
Route::post('edit', 'BookController@handleEdit');
Route::post('delete', 'BookController@handleDelete');

然后,在我的views文件夹中,我有以下文件:

代码语言:javascript
复制
create.blade.php
edit.blade.php
index.blade.php
layout.blade.php
view.blade.php

ControllerBookController

代码语言:javascript
复制
class BookController extends BaseController {

    //View page - Shows list of books
    public function index(){
        $books = Book::all();
        //compact()creates array of the books using names as keys
        return View::make('index', compact('books'));
    }

    //Create page - Shows create Form
    public function create(){
        return View::make('create');
    }

    //Logic to add a new book to the DB
    public function handleCreate(){
        $book = new Book;
        $book->book_name = Input::get('name');
        $book->book_desc = Input::get('desc');
        $book->save();
        return Redirect::action('BookController@index');
    }

    //Edit page - Shows edit form and populates with book info
    public function edit(Book $book){
        return View::make('edit', compact('book'));
    }

    //Logic to update an existing book in the DB
    public function handleEdit(){
        $book = Book::findOrFail(Input::get('id'));
        $book->book_name = Input::get('name');
        $book->book_desc = Input::get('desc');
        $book->save();
        return Redirect::action('BookController@index');
    }

    //Delete page
    public function delete(Book $book){
        //Show delete confirmation page
        return View::make('delete', compact('book'));
    }

    public function handleDelete(){
        //Handle delete logic...
        $id = Input::get('book');
        $book = Book::findOrFail($id);  
        $book->delete();
        return Redirect::action('BookController@index');
    }

    //View 
    public function view(Book $book){
        return View::make('view', compact('book'));
    }
}

我的问题是,如果我要将不同的views嵌套在一个名为books的子文件夹中,我如何修改我的路由。我尝试创建一个名为books的文件夹,并将views粘贴到其中,当我运行应用程序时,它说它找不到视图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-12 15:03:39

视图子文件夹

您可以简单地使用点语法在视图文件夹中导航文件夹结构。例如,以索引视图为例,如果要在views\books中使用索引视图,可以这样做:

代码语言:javascript
复制
public function index(){
    $books = Book::all();

    return View::make('books.index', compact('books'));
}

就这样!拉勒维尔把事情做得很简单。

因此,如果我们想更深入地研究这个问题,那么books内部的另一个子文件夹名为travel给予您views\books\travel如何?

代码语言:javascript
复制
public function index(){
    $books = Book::all();

    return View::make('books.travel.index', compact('books'));
}

资源路由

还值得注意的是,Laravel使路由到RESTful控制器(如您的BookController )非常容易使用Route::resource。对方法的所有映射GET和POST请求都是为您完成的。看看这里:http://laravel.com/docs/controllers#resource-controllers

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

https://stackoverflow.com/questions/25267519

复制
相关文章

相似问题

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