使用Laravel从DB创建动态页面

时间:2014-09-04 17:55:19

标签: php dynamic laravel routing

目前我从表中获取所有行,并显示页面上的每个类别。现在我想做一些新的东西但是在尝试了几件事之后我有点卡住了。 所以现在我有一个叫做照片的链接'当点击它时,所有照片都会显示出来。现在我想要一个子菜单,这样我才能看到某个类别的照片。这就是表格的样子

pk  imgUrl  category
--------------------
1   ...     portret
2   ...     nature
3   ...     portret
4   ...     cars

导航到www.mysite.com/photos时,无论类别如何,都会显示我的所有照片。 现在我想在访问www.mysite.com/photos/portret时添加功能,我只能看到类别portret中的照片。

我能够动态创建链接并转到正确的URL(www.mysite.com/photos),但页面为空。所以我不知道出了什么问题。路由?

我会发布我尝试过的内容以及我目前的内容。

在导航是静态的之前,但现在我想要它动态我添加了 NavController

public function index()
{
    //
    //return Photo::all();
    $title = "Photo";
    $photos = Photo::orderBy('category')->get();
    return View::make('photo')->with('title', $title)->with('photos', $photos);

    //QUERY - Eloquent
    //return Photo::all();
}

它的相应视图是 nav.blade ,其中包含此内容(这打印出我的动态链接)

<?php 
    $category = "";
?>
<ul>
    @foreach($photos as $photo)
        @if($category != $photo->Category)
            <li><a href="{{ $photo->Category }}"> {{ $photo->Category }} </a></li>
            <?php $category = $photo->Category; ?>
        @endif
    @endforeach
</ul>

然后在我的路径中,我可以导航到动态页面

Route::get('photos/{theme}', array('as' => '{theme}', 'uses' => 'PhotosController@show'));

然后在我的 PhotosController 中我有

    public function show($theme){
        $photos = Photo::where('category', $theme);
        return View::make('photo')->with('title', $theme)->with('photos', $photos);
    }

在我看来 photos.blade

    <?php 
        $category = ""; 
    ?>
    @foreach($photos as $photo)
        <a href="#myModal" class="linkWrapper"> {{ HTML::image("img/$photo->Link", "$photo->Title", array("class"=>"thumbnail thumbEffect")) }} </a>
    @endforeach

所以我没有看到或理解我做错了什么。此外,当访问www.mysite.com/photos/portret页面时,动态链接不再出现,而这应该只是在nav.blade中包含的动态链接我的模板。 有人能帮帮我吗?

编辑:我在这里的大部分工作是由于我在SO上找到的其他问答,而这是Laravel Creating Dynamic Routes to controllers from Mysql database

1 个答案:

答案 0 :(得分:1)

您的代码看起来对我很好,但您忘记从数据库中获取照片:

public function show($theme)
{
    $photos = Photo::where('category', $theme)->get(); /// here

    return View::make('photo')->with('title', $theme)->with('photos', $photos);
}