Laravel重定向()没有';我不研究链式方法


Laravel redirect() doesn't work on chaining method

我在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()不起作用。

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

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

然而,我想指出的是,这混合了你们的担忧。重定向是控制器严格关注的问题;你的模型不应该对此有任何线索,甚至不应该认为这是可能的。