我遵循Tutsplus关于使用Laravel创建电子商务网站的教程。我现在遇到的问题是在尝试路由到子文件夹时。在本教程中,讲师包含一个功能,您可以按ID查看产品。他就是这样做的:
// StoreController.php
public function getView($id) {
return View::make('store.view')->with('store', Store::find($id));
}
这段代码似乎是从id
表中传递stores
。我认为点击产品时,id
通过时就是
// Routes.php
Route::controller('store', 'StoreController');
还有一些模板:
// store\index.blade.php
<h2>Stores</h2>
<hr>
<div id="stores row">
@foreach($stores as $store)
<div class="stores col-md-3">
<a href="/store/products/view/{{ $store->id }}">
{{ HTML::image($store->image, $store->title, array('class' => 'feature', 'width'=>'240', 'height' => '127')) }}
</a>
<h3><a href="/store/products/view/{{ $store->id }}">{{ $store->title }}</a></h3>
<p>{{ $store->description }}</p>
</div>
@endforeach
</div><!-- end product -->
所以......当我点击某个产品时,它会引导我domain:8000/store/view/6
,其中6
是id
。
这很好但我想知道的是如何通过子文件夹进行路由?让我们说我希望它是这样的:store/view/products/6
考虑到我有一个名为products的文件夹,我的view.blade.php就在这里:store/products/view
。
在我的StoreController
课程中,我尝试更改此
public function getView($id) {
return View::make('store.view')->with('store', Store::find($id));
}
到这个
public function getView($id) {
return View::make('store.product.view')->with('store', Store::find($id));
}
但它似乎没有给我任何东西,只有一个未找到控制器方法错误。
答案 0 :(得分:0)
首先,视图名称View::make('store.product.view')
与网址无关。
您必须更改路线:
Route::controller('store/view', 'StoreController');
然后在控制器中调整方法的名称,因为它应该与store/view
之后的网址段相同
public function getProducts($id) {
return View::make('store.product.view')->with('store', Store::find($id));
}
我强烈建议您阅读有关主题的Laravel docs