NotFoundHttpException Laravel

时间:2016-07-27 20:47:46

标签: laravel laravel-5 laravel-blade

我是学习Laravel的新手。我想从数据库中获取数据并显示它。我能做到。但我想使用标题(从数据库中提取)作为链接。但后来我得到一个NotFoundHttpException。

路线

Route::get('articles', 'ArticleController@index');
Route::get('articles/{id}', 'ArticleController@show');

控制器

class ArticleController extends Controller
{
    public function index()
    {
        $articles = Article::all();

        return view('articles.index', compact('articles'));
    }

    public function show($id){
        $article = Article::find($id);

        return view('articles.show', compact('article'));
    }
}

查看

@extends('new_welcome')
@section('content')
<h1>Articles</h1>
    @foreach($articles as $article)
        <article>
            <h2>
                <a href="{url ('/articles',$article->id)}">{{$article->title}}</a>
            </h2>
            <div class="body">{{ $article->body}}</div>
       </article>
    @endforeach
@stop

在这种情况下有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你的问题是因为你&#34; eat&#34;一个花括号(刀片引擎跳过它):

是:

href="{url ('/articles',$article->id)}"

必须是:

href="{{url ('/articles',$article->id)}}"

正如你所说:

  

如果我点击任何一篇文章标题,那么就无法告诉我了   具体文章。但是,如果我提供URL&#34; homestead.app/articles/2" ;;

所以当您点击链接时,您可以看到您的浏览器的地址栏变为:

homestead.app/{url ('/articles',$article->id)}



因为您是初学者,所以我建议您不要使用url()帮助程序在视图中设置直接网址。

如果您希望将来能够正常使用的应用,则命名路线会更好您决定将网址从articles更改为artcls。在此命名路由中,您将从视图文件中保存批量更改URL。

使用'as'指令将名称设置为您的路线,使您的路由更容易进行更改(当您需要更改URL以便仅更改路径并保持视图不变时):

Route::get('articles/{id}', ['as' => 'article', 'uses' => 'ArticleController@show']);
Route::get('articles', ['as' => 'articles', 'uses' => 'ArticleController@index']);

更改您的视图文件(在href中查找route帮助程序):

@extends('new_welcome')
@section('content')
    <h1> Articles </h1>

    @foreach($articles as $article)
        <article>
            <h2>

                <a href="{{ route('article', $article->id) }}">{{$article->title}}</a>

            </h2>
            <div class="body">{{ $article->body}}</div>
        </article>
    @endforeach
@stop