Handler.php第131行中的NotFoundHttpException:

时间:2017-03-07 06:59:14

标签: laravel

我知道这可能是非常愚蠢的事情,但我似乎无法修复它。

我收到此错误

  

Handler.php第131行中的NotFoundHttpException:模型[App \ Modules \ Menus \ Models \ Menu]没有查询结果。

似乎无法修复它。目前它甚至不应该要求菜单模型。

这是我的route.php

Route::get('/signup', [
    'uses' => 'OpenController@signup',
    'as' => 'signup'
]);

这是我的OpenController.php

<?php

namespace App\Modules\Open\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use App\Modules\Menus\Models\Menu;
use App\Modules\Authors\Models\Story;

class OpenController extends Controller
{
    public function index(){
        $menus_child = Menu::where('menu_id', 0)->with('menusP')->get();
        $menu = Menu::where('id', 1)->orWhere('title', 'home')->firstOrFail();
        return view('open::index', compact('menus_child', 'menu'));
    }

    public function content($id){
        $menus_child = Menu::where('menu_id', 0)->with('menusP')->get();
        $menu = Menu::where('id', $id)->firstOrFail();
        $layout = $menu->type;
        $stories = Story::where('type', 'public')->get();

        return view('open::public/'.$layout, compact('menus_child', 'menu', 'stories'));
    }

    public function signup(){
        echo "sign up";
        die();
    }
}

这是我的signup.blade.php

@extends('templates::layouts.public')
@section('content')
    <h1>signup blade</h1>
@stop

这是我的public.blade.php布局

<!DOCTYPE html>
<html>
    <head>
        <title>Website</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://fonts.googleapis.com/css?family=Cherry+Swash|Crafty+Girls|Homemade+Apple|Italianno|Parisienne|Ranga|Rochester" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
        {!! Html::style('css/bootstrap.min.css') !!}
        {!! Html::style('css/style.css') !!}
        {!! Html::script('js/jquery-3.1.1.min.js') !!}
        {!! Html::script('js/bootstrap.min.js') !!}
        {!! Html::script('js/main.js') !!}
    </head>
    <body>
        <div class="container">
            <div id="main">
                <div id="header">
                    <div id="logo">
                        <div class="row">
                            <div class="col-lg-6">
                                <h1>Website</h1>
                            </div>
                            <div class="col-lg-6">
                                <div class="slogan">
                                    {!! Html::link('/signup', 'Signup') !!} / {!! Html::link('/login', 'Login') !!}
                                </div>
                            </div>
                        </div>
                    </div>
                    @include('menus::menu')
                </div>
                <div id="site_content">
                    <div id="content">
                        @yield('content')
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

这是我的menu.blade.php

<div id="menubar">
    <ul class="nav navbar-nav" id="menu">
        @foreach($menus_child as $grandfather)
            @if($grandfather->menu_id)
                <li>
            @elseif($grandfather->title == 'Home')
                <li class="parent {{ menu_active([$grandfather->id]) }}">
            @elseif(count($grandfather->menusP()->where('menu_id', '>', 0)->get()))
                <li class="dropdown {{ menu_active([$grandfather->id]) }}">
            @else
                <li class="parent {{ menu_active([$grandfather->id]) }}">
            @endif

            @if(count($grandfather->menusP()->where('menu_id', '>', 0)->get()))
                {!! HTML::decode(HTML::link($grandfather->id, $grandfather->title.'<span class="caret"></span>', array('class' => 'dropdown-toggle')))!!}
            @else
                {!! HTML::link($grandfather->id, $grandfather->title) !!}
            @endif

            @if(count($grandfather->menusP))
                <ul class="dropdown_menu">
                    @foreach($grandfather->menusP as $father)
                        @if($father->menu_id)
                            <li class="parent_child">
                        @else
                            <li>
                        @endif

                        {!! HTML::link($father->id, $father->title) !!}
                    @endforeach
                </ul>
            @endif
        @endforeach
    </ul>
</div>

2 个答案:

答案 0 :(得分:4)

我发现了导致这个问题的原因。这就是我放置路线的方式。所以我所做的只是将我的注册路线放在我的路线上,这解决了我的问题

答案 1 :(得分:0)

@Gus,@ Isis

这篇文章帮助我解决了一个非常相似(或可能相同)的问题。在我的特定情况下,我立即意识到这是简单的用户错误 - 这可能有助于解释为什么会发生这种情况......

考虑后续路线,请考虑访问以下网址:

获取 app.com/team/add-favorite

[bad] 路线:

// Bad Routing Logic
Route::get('/team/{team}', 'TeamController@show');
Route::get('/team/add-favorite', 'UserTeamController@default');
Route::get('/team/add-favorite/{conference}', 'UserTeamController@index');

显然,第二条路线(/ team / add-favorite)永远不会被调用,因为它只是路由到 / team / {team} ,其中[team]参数填充了一个值“add-favorite”。

我的解决方案是简单地重新安排路线的顺序,如此......

[更好] 路线:

// Still not good practice, but works
Route::get('/team/add-favorite', 'UserTeamController@default');
Route::get('/team/add-favorite/{conference}', 'UserTeamController@index');
Route::get('/team/{team}', 'TeamController@show');

这绝对不是最佳做法,但至少会允许每条路线正确解决。

app.com/team/add-favorite 现在将匹配第一条路线,而 app.com/team/17 之类的内容仍将落在第三条路线上路由并使用适当的ID传递给TeamController。

再次 - 我不建议使用“共享”端点以这种方式进行路由,因为它肯定会导致问题。即 - 更好的希望从来没有一个团队和ID ='add-favorite'。极不可能,但你明白了......

希望这有帮助!