私のプロジェクトで非常に奇妙な問題があります。リダイレクトしてルートを開くが、動作しないコントローラの1つにリダイレクトルートがあります。Laravel redirect() - > route()が正常に動作しない(ビューが古い状態で更新されていない)
私はこれが曖昧に聞こえることを知っています。私は説明するために全力を尽くします。私はいくつかのhrefのビューを持って、このコントローラがハンドラを呼び出すコントローラにgetリクエストを送り、ハンドラがレコードをいくつか挿入し、コントローラが元のルートにリダイレクトします。
私がクリックすると、レコードが正しく挿入され、元のページに戻ってきますが、元のページはまだ古い状態にあり、更新されていないという問題があります。変更を有効にするには、手動でページを更新する必要があります。私はビュー内の何も更新せずに同じhref a hunderd回をクリックすることができます。
さらに悪いことに、同じ正確なコードはローカル開発環境では正常に動作し、ステージング環境ではこれが実際の運用環境で行われます。
マイビュー:私は変更はセッションフラッシュのような効果を取る参照して別のページへのルートを変更するコントローラ
で
@extends('layouts.master')
@section('title', 'Trajecten')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
@if (Session::has('status'))
<div class="alert alert-success">
<ul>
<li>{{Session::get('status')}}</li>
</ul>
</div>
@endif
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
</div>
</div>
<div class="row">
<div class="col-md-12">
<a href="#" data-toggle="modal" data-target="#contactModal">
<button type="submit" class="btn btn-primary btn-orange pull-right">
Meld nieuwe inkoop behoefte
</button>
</a>
<table class="table table-hover table-striped">
<thead>
<tr>
<th>Product/dienst</th>
<th>Geïnteresseerd</th>
<th>Deelnemen t/m</th>
<th>Informatie</th>
<th>Deelnemen</th>
</tr>
</thead>
@foreach($trajects as $traject)
<tr>
<td>{{$traject->name}}</td>
<td>{{$traject->deelnemers->count() + $traject->participants}}</td>
<td>{{date('d-m-Y', strtotime($traject->tot))}}</td>
<td>Klik <a href="#" data-toggle="modal" data-target="#trajectmodal{{$traject->id}}" onclick="log(10,2,{{$traject->id}})">hier</a> voor meer informatie</td>
<td>@if(in_array($traject->id, $usertrajects)) U bent geregistreerd als geïnteresseerde @else Klik <a href="{{ route('traject.participate', ['id' => $traject->id])}}">hier</a> voor deelname @endif</td>
</tr>
@endforeach
</table>
</div>
</div>
@foreach($trajects as $traject)
<div class="modal fade" id="trajectmodal{{$traject->id}}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Meer informatie voor {{$traject->name}}</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
{!!$traject->description!!}
</div>
</div>
</div>
<div class="modal-footer text-center">
@if($traject->conditie != "")<a target="__blank" href="{{$traject->conditie}}" onclick="log(11,2,{{$traject->id}})"><button type="button" class="btn btn-default pull-left btn-orange">Conditie</button></a>@endif
@if($traject->product != "")<a target="__blank" href="{{$traject->product}}" onclick="log(12,2,{{$traject->id}})"><button type="button" class="btn btn-default btn-orange">Product</button></a>@endif
@if($traject->leverancier != "")<a target="__blank" href="{{$traject->leverancier}}" onclick="log(13,2,{{$traject->id}})"><button type="button" class="btn btn-primary btn-orange">Leverancier</button></a>@endif
</div>
</div>
</div>
</div>
@endforeach
</div>
<div class="modal fade" tabindex="-1" role="dialog" id="contactModal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="gridSystemModalLabel">Meldpunt inkoop behoefte</h4>
</div>
<div class="modal-body">
<form class="form-horizontal" role="form" id="meldinkoopbehoefte" method="post">
{!! csrf_field() !!}
<div class="form-group">
<label for="subject" class="col-sm-3 text-left control-label">Inkoop behoefte</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="subject" name="subject" placeholder="Onderwerp" value="">
</div>
</div>
<div class="form-group">
<label for="message" class="col-sm-3 text-left control-label">Bericht</label>
<div class="col-sm-9">
<textarea class="form-control" rows="4" placeholder="Bericht" name="message"></textarea>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" onclick="javascript:$('#meldinkoopbehoefte').submit()" class="btn btn-primary btn-orange">Verstuur</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
@endsection
私の方法。だから私はこの時点で私の見解を疑う。
public function participate($id){
if(TrajectHandler::participate($id)){
Session::flash('status', 'Uw interesse of voorstel is ontvangen');
}
//Changing the route to another page i see the changes take effect.
//So i am suspecting my view at this point.
return redirect()->route('traject.index');
}
コントローラ内のインデックスメソッド
public function index(){
$trajects = TrajectHandler::getTrajects();
$userTrajects = TrajectHandler::getUserTrajects();
foreach ($trajects as $traject) {
if (!is_null(ViewedUserTraject::where('user_id', Auth::id())
->where('traject_id', $traject->id)->first()))
continue;
$viewedTraject = new ViewedUserTraject();
$viewedTraject->user_id = Auth::id();
$viewedTraject->traject_id = $traject->id;
$viewedTraject->save();
}
return view('traject.index', [
'trajects' => $trajects,
'usertrajects' => $userTrajects
]);
}
controlller
におけるもう一つの方法、それは基本的に同じことであると私は疑問に、このメソッドを追加することにしましたしかし働く。
public function suggestTraject(ContactRequest $request){
Mailer::inkoopBehoefteMail(Auth::user(), $request->subject, $request->message);
Session::flash('status', 'Inkoop behoeften verstuurd.');
return redirect()->route('traject.index');
}
TrajectHandler参加方法
public static function participate($id){
$count = TrajectUser::where('user_id' , Auth::id())->where('traject_id', $id)->get();
if (count($count) == 0) {
$traject = new TrajectUser;
$traject->traject_id = $id;
$traject->user_id = Auth::id();
if($traject->save()){
Logger::log(Auth::id(),5,2,$id);
Mailer::newTrajectUser(Auth::user(), Traject::find($id));
return true;
}
return false;
}
return true;
}
マイルート
Route::group(['prefix' => 'traject'], function(){
Route::get('', ['as' => 'traject.index' , 'uses' => 'User\[email protected]']);
Route::post('', ['as' => 'traject.index' , 'uses' => 'User\[email protected]']);
Route::get('participate/{id}', ['as' => 'traject.participate' , 'uses' => 'User\[email protected]']);
});
あなたは 'TrajectController :: index()'のコードを投稿できますか? – Jerodev
@ Jerodev質問に追加されました。 – Maantje
これを試してくださいreturn return() - > route( 'traject'); ' –