【问题标题】:How to retrieve input field如何检索输入字段
【发布时间】:2015-04-05 09:19:51
【问题描述】:

如何获取更新任务的输入字段?当试图 dd(Request::input('task')); 我得到 “不应该静态调用非静态方法 Illuminate\Http\Request::input(),假设 $this 来自不兼容的上下文”

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Task;
use Illuminate\Http\Request;

class TaskController extends Controller {

public function update($id)
{
    dd(Request::input('task'));
    $task = Task::findOrFail($id);
    $task->title = Request::input('task');
    $task->save();
    return Redirect::to('tasks');
}

编辑视图(工作正常)

{!! Form::model($task, array('url' => 'tasks/'.$task->id, 'method' => 'PATCH')) 
    !!}
    {!! Form::text('task', $task->task, array('class' => 'form-control')) !!}
    {!! Form::submit('Edit', array('class' => 'btn btn-default')) !!}
    {!! Form::close() !!}

【问题讨论】:

  • 只是说,您可以通过用反引号 (`) 包装内联代码来格式化代码,它会使它看起来像代码而不是强调的文本。

标签: laravel laravel-5


【解决方案1】:

你输入了错误的Request

要使用Request 外观,您必须这样做:

use Illuminate\Support\Facades\Request

或者只是别名:

use Request

你也可以像这样使用依赖注入:

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Task;
use Illuminate\Http\Request;

class TaskController extends Controller {

    public function __construct(Request $request){
        $this->request = $request;
    }

    public function update($id){
        $task = Task::findOrFail($id);
        $task->title = $this->request->input('task');
        $task->save();
        return Redirect::to('tasks');
    }
}

或者只对那一种方法使用 DI:

public function update(Request $request, $id){
    $task = Task::findOrFail($id);
    $task->title = $request->input('task');
    $task->save();
    return Redirect::to('tasks');
}

【讨论】:

    【解决方案2】:

    你应该为此使用依赖注入:

    use Illuminate\Http\Request;
    
    ...
    
    public function update(Request $request, $id)
    {
        //
        $task->title = $request->input('task');
        //
    }
    

    请参阅文档了解更多信息:http://laravel.com/docs/5.0/controllers#dependency-injection-and-controllers

    【讨论】:

    • 谢谢,我需要看看那个。我正在看 Jeffrey Way 的教程,但我不明白那个特定的部分,所以我只是尝试了一些非常基本的东西。
    • Laravel 5 是帮助开发人员遵守一套标准的好方法。 DI 非常有用,我更喜欢 Facades 中的它们(并不是说我对它们有任何抱怨)。所以,是的,尽可能多地参考 L5 做事的方式——你的学习经验将是非常有利的。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多