使用Laravel构建电子商务网站:如何根据ID查看/路由产品?

时间:2014-12-31 06:44:12

标签: php laravel

我遵循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,其中6id

这很好但我想知道的是如何通过子文件夹进行路由?让我们说我希望它是这样的: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));
}

但它似乎没有给我任何东西,只有一个未找到控制器方法错误。

1 个答案:

答案 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