我创建了一个允许用户创建主题/帖子的视图。该视图的链接位于我的导航栏中。但问题是当我尝试单击链接(显示视图)时,我被重定向到主页而没有任何错误。
在导航栏的链接中,我放置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('/');
}
答案 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']);
}