我目前有一个简单的CRUD
应用程序内置在Laravel
与Books
的database
相互作用。这是我的routes.php
文件:
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
文件夹中,我有以下文件:
create.blade.php
edit.blade.php
index.blade.php
layout.blade.php
view.blade.php
Controller
是BookController
:
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
粘贴到其中,当我运行应用程序时,它说它找不到视图。
查看子文件夹
您可以简单地使用点语法在views文件夹中向下导航文件夹结构。以索引视图为例,如果你想让它驻留在views'books
中,你可以这样做:
public function index(){
$books = Book::all();
return View::make('books.index', compact('books'));
}
就是这样!Laravel让它非常简单。
如果我们想要更深入一些,那么在books
下的另一个子文件夹travel
会怎样呢?也就是views'books'travel
:
public function index(){
$books = Book::all();
return View::make('books.travel.index', compact('books'));
}
同样值得注意的是,Laravel使路由到像BookController
这样的RESTful控制器非常容易使用Route::resource
。所有映射到方法的GET和POST请求都已经为您完成了。点击这里查看:http://laravel.com/docs/controllers#resource-controllers