2015-02-05 43 views
6

如何获取用于更新任务的输入字段?当试图 dd(Request::input('task'));我得到“非静态方法照亮\ HTTP \支持::输入()不应该被静态调用,假设$这种在不兼容的情况下”如何检索输入字段

<?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() !!} 
+0

只是说,你可以格式化代码通过将其包装在反引号('\'')中进行内联,它将使它看起来像代码而不是强调文本。 – 2015-02-05 13:37:41

回答

10

你应该使用依赖注入这个:

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

+1

thx,我需要看看。我正在观看Jeffrey Way的教程,但我不明白那个具体的部分,所以我只是尝试了一些非常基本的东西。 – Marko 2015-02-05 13:55:58

+1

Laravel 5是帮助开发人员坚持一套标准的好方法。 DI是非常有用的,我更喜欢Facades的他们(不是我对他们有任何抱怨)。所以,是的,尽可能地提及L5做事情的方式 - 你的学习经验将会非常有利。 :-) – 2015-02-05 14:13:44

17

您输入了错误的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'); 
}