2015-02-05 12 views
6

Jak uzyskać pole wejściowe do aktualizacji zadania? Gdy próbuje dd(Request::input('task')); uzyskać "metoda niestatyczny Illuminate \ http \ Zapytanie :: input() nie powinien być nazywany statycznie, zakładając $ to od niezgodnej kontekście"Jak odzyskać pole wejściowe

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

Edycja widzenia (jego pracy ok)

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

Po prostu mówiąc, można Formatuj kod inline, zawijając go w backticks ('\' '), dzięki czemu będzie wyglądał jak kod zamiast podkreślonego tekstu. –

Odpowiedz

10

Należy użyć Dependency Injection na to:

use Illuminate\Http\Request; 

... 

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

proszę zobaczyć dokumenty, aby uzyskać więcej informacji: http://laravel.com/docs/5.0/controllers#dependency-injection-and-controllers

+1

thx, będę musiał na to popatrzeć. Oglądam tutoriale Jeffrey Way, ale nie rozumiem tej konkretnej części, więc spróbowałem czegoś bardzo prostego. – Marko

+1

Laravel 5 to świetny sposób, aby pomóc programistom trzymać się zestawu standardów. DI jest niezwykle przydatny i zdecydowanie wolę je od fasad (nie mam żadnych skarg na ich temat). Więc tak, odnosisz się do tego, w jaki sposób działa L5 - twoje doświadczenie edukacyjne będzie bardzo korzystne. :-) –

17

Zaimportowano nieprawidłowy Request.

Aby korzystać fasadę Request trzeba zrobić:

use Illuminate\Support\Facades\Request 

Albo po prostu alias:

use Request 

Można również użyć Dependency Injection takiego:

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

Albo tylko używać DI na tej jednej metody:

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