Laravel redirect()不适用于链接方法

时间:2016-05-14 15:38:55

标签: php laravel laravel-5.2

我在laravel上有简单的模型,我想使用PHP面向对象来保存或更新Controller内的数据。我的解决方案的所有方法都可以正常工作,但我无法重定向。

模型

class RechargeRangeCard extends Model
{
    protected $table = "recharge_range_cards";
    protected $guarded = ['id'];

    private $request;

    public function data(StoreRechargeRangeCard $request)
    {
        $this->request = $request;
        return $this;
    }

    public function store()
    {
        $data = RechargeRangeCard::create(
            [
                'minimum' => $this->request->input('minimum_range'),
                'maximum' => $this->request->input('maximum_range'),
                'user_id' => Auth::user()->id,
            ]
        );

        return $this;
    }

    public function redirect()
    {
        return redirect()->to('rechargeRangecards');
    }
}

控制器

public function store(StoreRechargeRangeCard $request)
{
    $class = new RechargeRangeCard();
    $class->data($request)->store()->redirect();
}

在此链接方法redirect()不起作用。

1 个答案:

答案 0 :(得分:1)

您必须从Controller方法返回重定向才能使其正常工作:

public function store(StoreRechargeRangeCard $request)
{
    $class = new RechargeRangeCard();
    return $class->data($request)->store()->redirect();
}

但是,我想指出这是混合你的担忧。重定向严格地是控制器的关注点;你的模型不应该对此有任何线索,甚至不可能。