Laravel 5.2只是在尝试显示视图时出错

时间:2017-06-19 18:17:08

标签: php laravel laravel-5 laravel-5.2 laravel-5.1

我创建了一个允许用户创建主题/帖子的视图。该视图的链接位于我的导航栏中。但问题是当我尝试单击链接(显示视图)时,我被重定向到主页而没有任何错误。

在导航栏的链接中,我放置const menuWidth = "256px"; const MenuWrapper = styled.div` display: flex; overflow: hidden; max-width: ${menuWidth}; ` const Menu = styled.div` min-width: ${menuWidth}; order: ${props => props.order}; ` .slide-enter.left { transform: translate(-100%); } .slide-enter.slide-enter-active.left { transform: translate(0%); transition: transform 500ms ease-in-out; } .slide-leave.left { transform: translate(-100%); } .slide-leave.slide-leave-active.left { transform: translate(0%); transition: transform 500ms ease-in-out; } .slide-enter.right { transform: translate(0%); } .slide-enter.slide-enter-active.right { transform: translate(-100%); transition: transform 500ms ease-in-out; } .slide-leave.right { transform: translate(0%); } .slide-leave.slide-leave-active.right { transform: translate(-100%); transition: transform 500ms ease-in-out; } ,它只是激活名为“createtheme”的路线。这条路线如下: <li><a href="{{ route('createtheme') }}">。 所以这激活了ThemesController.php中的create方法。这是:

Route::get('/theme/create', 'ThemesController@create')->name('createtheme');

所以,如果我正确地读到这个,这应该给我正确的观点,对吧?它并没有给我任何错误,所以我不知道在哪里看。

这是我试图显示的视图:

public function create()
{
    return view('themes.create');
}

以下是与此问题相关的路线。

@extends('layouts.default')

@section('content')
<div class="container main-content">
    <div class="row first-row">
        <div class="col s12">
            <div class="card">
                <div class="card-content clearfix">
                    <span class="card-title">New theme</span>
                </div>
            </div>
            <div class="card">
                <div class="card-content">
                    <form method="POST" action="">
                        {{ csrf_field() }}
                        <input type="hidden" name="user_id" value="{{ Auth::user()->id }}">
                        <div class="row">
                            <div class="input-field col s6 has-error form-group">
                                <input id="title" class="form-control" type="text" name="title" placeholder="Title of topic">
                                <label for="title" class="active">Title of theme</label><span>Titel is mandatory!</span>
                            </div>
                            <div class="file-field input-field col s6 form-group">
                                <div class="btn cyan darken-1 disabled"><span>Attachment</span>
                                    <input id="attachement" type="file" name="attachment" class="disabled">
                                </div>
                                <div class="file-path-wrapper form-group">
                                    <input type="text" placeholder="geen" class="file-path validate form-control">
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col s12 form-group">
                                <textarea id="message-body" class="form-control" name="body"></textarea>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col s6">
                                Hier komen opties om het onderwerp te sluiten of
                                aan te geven dat het opgelost is, alleen bij bewerken
                            </div>
                            <div class="col s6">
                                <a href="" class="btn right cyan darken-1" type="submit">Save</a>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

@section('scripts')
<script type="text/javascript" src="{{ asset('js/ckeditor/ckeditor.js') }}">
</script>
<script type="text/javascript" src="{{ asset('js/editor.js') }}"></script>
<script type="text/javascript" src="{{ asset('js/blog.js') }}"></script>
<script type="text/javascript" src="{{ asset('js/materialize.js') }}">
</script>
@endsection

当然还有Store方法:

Route::get('/theme/create', 'ThemesController@create')->name('createtheme');
Route::post('/theme/create', 'ThemesController@store');

中间件

public function store(Request $request)
{
    Theme::create($request->input()); //Dit doet hetzelfde als bovenstaande

    return redirect('/');
}

2 个答案:

答案 0 :(得分:1)

那时的问题:

  if ($request->user()->role_id != 2 || 3)

更具体地说,在比较中:

 (Integer value) != 2 || 3

所有ingeteger值都会返回true,甚至0。 E.g:

 if (0 != 2 || 3) -> TRUE
 if (2 != 2 || 3) -> TRUE
 if (3 != 2 || 3) -> TRUE

然后你得到重定向。在那个时候改变你的代码以进行正确的比较(你没有正确使用运算符)。 最简单的方法:

 $allowed_role_ids = [2,3]; // array(2,3);
 if (!in_array($request->user()->role_id,$allowed_role_ids)){
    // redirect
 } 

答案 1 :(得分:0)

你在控制器中有这个代码吗?

public function __construct()
{
    $this->middleware('auth');
}

如果是,并且您尚未登录。您将被重定向到主页。

尝试

public function __construct()
{
    $this->middleware('auth')->except(['store', 'create']);
}