一切看起来都对我好。这很简单,但我不知道。我到处都看。
问题:它没有重定向。它没有给出错误没有任何反应。
但是当我进入浏览器http://site.dev/fail
时
它在屏幕上显示“失败”字样(因此可以正常工作)。
routes.php文件:
Route::post('getir' , 'Ahir\Ticket\Controllers\TicketController@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' , 'Ahir\Ticket\Controllers\TicketController@postInsert');
所以这个postInsert
会在控制器票据下面触发。
控制器票证:
<?php namespace Ahir\Ticket\Controllers;
use BaseController, Input;
//use Ahir\Ticket\Repositories\TicketInterface;
use Ahir\Ticket\Adapters\AdapterInterface ;
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');
}
答案 0 :(得分:0)
问题是你没有从调用函数返回任何内容。
您的应用程序调用故障单控制器上的postInsert()
方法。此函数调用另一个返回Redirect
的函数。
但是你没有将返回的Redirect传递回应用程序,因此postInsert()
函数只是在没有任何输出的情况下终止。应用程序不知道postInsert()
函数中发生了什么,它只是等待返回的东西。由于没有返回任何内容,HTTP响应只是空的。为了将Redirect传递回应用程序,您还必须从调用函数返回它:
public function postInsert()
{
return $this->adapter->postInsert();
}