2015-02-05 4 views
6

Как получить поле ввода для обновления задачи? При попытке dd(Request::input('task')); я получаю "Non-статический метод Осветите \ Http \ Request :: вход() не должен вызываться статически, предполагая $ это от несовместимого контекста"Как получить поле ввода

<?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'); 
} 

Edit зрения (его работает нормально)

{!! 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

Просто говоря, вы можете форматируйте его внутри, обернув его в backticks ('\' '), и это сделает его похожим на код вместо подчеркнутого текста. –

ответ

10

Вы должны использовать Dependency Injection для этого:

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

+1

Laravel 5 - отличный способ помочь разработчикам придерживаться набора стандартов. DI чрезвычайно полезен, и я предпочитаю их от Facades (не то, что у меня есть жалобы на них). Поэтому да, обращайтесь к тому, как L5 делает все возможное, - ваш опыт обучения будет очень полезным. :-) –

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'); 
} 
Смежные вопросы