在edit.blade.page
上有一个用于文件删除的按钮,该按钮导致控制器中的update
方法。 update
方法调用专用的deleteImage
方法,我想从该方法将用户重定向回edit.blade.page
,但它会将我重定向到其他地方。
我尝试了documentation
控制器
public function update(Request $request, $id){
($request['method']==true) ? $this->imageDelete($request, $id) : null;
}
private function imageDelete (Request $request, $id){
if($request['method']=='destroy'){
$file = public_path().'/storage'.$request['old_image'];
$validatedData = $request->validate(['images'=> 'string',]);
$old_images = explode(',', $request['images']);
$paths = array();
foreach ($old_images as $old){
($old != $request['old_image']) ? $paths[] = $old : null ;
}
(File::exists($file)) ? File::delete($file) : null;
Announcement::where('slug', $id)->update(array_merge($validatedData,array('images'=>implode(",",$paths),)));
return redirect()->route('announcements.edit',[$id])->with('status',1);
}
return redirect()->route('announcements.edit',[$id])->with('status', 0);
}
路线
Route::resource('announcements', 'AnnouncementController', ['names' => [
'index' => 'announcements',
'store' => 'announcements.store',
'show' => 'announcements.show',
'destroy'=>'announcements.destroy',
'update' => 'announcements.update',
]])
答案 0 :(得分:0)
只需将route
帮助程序与redirect
帮助程序一起使用,即可指定您要转到的路线名称:
return redirect()->route('your.route.name');
注意:这需要您命名路线,例如
Route::get('/test', 'SomeController@index')->name('test')
或者您可以将URL直接传递到redirect
。
我通常发现,在我想让我的代码执行的操作中明确表示可以避免错误/意外的副作用。
答案 1 :(得分:0)
您有2个不错的选择:
return redirect('/edit');
return view('your.view');
任何一个都应该能够完成您想做的事情。
答案 2 :(得分:0)
好的! laravel似乎看不到其他函数的返回结果,而不是自己预定义的结果。 因此,在这种情况下,解决方案是从update方法内返回
public function update(Request $request, $id){
return ($request['method']==true) ? $this->imageDelete($request, $id) : null;
}