我觉得一切都很好。很简单,但我不知道。我到处都找过了。
问题:它不会重定向。它不会出错,什么都不会发生。但当我进入浏览器http://site.dev/fail
时它在屏幕上显示"失败"字(所以它工作)。
routes.php:
Route::post('getir' , 'AhirTicketControllersTicketController@postInsert');
Route::get('fail', function() { return 'fail'; });
Route::get('success', function() { return 'success'; });
编辑所有内容
场景:在site.dev/
(主页)上我按提交那个表格有这个。
form action="getir" method="POST" role="form"
所以按钮将我重定向到
Route::post('getir' , 'AhirTicketControllersTicketController@postInsert');
因此该CCD_ 3在下面的控制器票证处被触发。
控制器票证:
<?php namespace AhirTicketControllers;
use BaseController, Input;
//use AhirTicketRepositoriesTicketInterface;
use AhirTicketAdaptersAdapterInterface ;
class TicketController extends BaseController {
public function __construct(AdapterInterface $adapter) //TicketInterface $repository
{
//$this->repository = $repository;
$this->adapter = $adapter;
}
public function postInsert()
{
$this->adapter->postInsert();
}
}
然后它会出现在这里
编码
public function postInsert()
{
// create the validation rules ------------------------
$rules = array(
'title' => 'required',
'content' => 'required',
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
// i added here return vardump('fail'); it displays on screen.
// so i know that program comes here
// but the redirect below neither gives error nor redirect.
//nothing happens here. idk why!
return Redirect::to('fail')->withErrors($validator);
} else {
// validation successful ---------------------------
$this->obj->insert([
'title' => Input::get('title') ,
'content' => Input::get('content')
]);
//here DOESNT work too.
return Redirect::to('success');
}
问题是您没有从调用函数返回任何内容。
您的应用程序调用票证控制器上的postInsert()
方法。此函数调用另一个返回Redirect
的函数。
但是您没有将返回的Redirect传递回应用程序,所以postInsert()
函数只是终止而没有任何输出。应用程序不知道postInsert()
函数中发生了什么,它只是等待返回一些内容。由于没有返回任何内容,HTTP响应就是空的。为了将重定向传递回应用程序,您还必须从调用函数返回它:
public function postInsert()
{
return $this->adapter->postInsert();
}