我无法将redirect :: to()和路由绑定在一起,它不会重定向

时间:2014-10-09 07:54:40

标签: php laravel-4 laravel-routing

一切看起来都对我好。这很简单,但我不知道。我到处都看。

问题:它没有重定向。它没有给出错误没有任何反应。         但是当我进入浏览器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');
    }

1 个答案:

答案 0 :(得分:0)

问题是你没有从调用函数返回任何内容。

您的应用程序调用故障单控制器上的postInsert()方法。此函数调用另一个返回Redirect的函数。

但是你没有将返回的Redirect传递回应用程序,因此postInsert()函数只是在没有任何输出的情况下终止。应用程序不知道postInsert()函数中发生了什么,它只是等待返回的东西。由于没有返回任何内容,HTTP响应只是空的。为了将Redirect传递回应用程序,您还必须从调用函数返回它:

public function postInsert()
{
    return $this->adapter->postInsert();

}