2017-11-23 3 views
0

Ich verwende LaravelCollective Form einen Mitarbeiter zu löschen:Laravel. Übergabe von Argumenten durch Löschanfrag

{!! Form::open(['method' => 'DELETE', 'action' => ['[email protected]', $employee->id, $company->id]]) !!} 

       <div class="form-group"> 
        {!! Form::submit('Remove employee', ['class'=>'btn btn-danger']) !!} 
       </div> 

{!! Form::close() !!} 

und will 2 Argumente zu übergeben: Mitarbeiter-ID und Unternehmen ID.

Meine Route:

Route::delete('/employees/{employee}/{company}', '[email protected]'); 

Meine Reglerfunktion:

public function destroy($id, $companyId) 
{ 
    Employee::find($id)->delete(); 

    if($companyId == 0) 
     return redirect('/employees'); 
    else 
     return redirect('/companies/' . $companyId . "/edit"); 
} 

Ich erhalte eine Fehlermeldung, dass ich nur 1 Parameter bin vorbei. Wo ist das Problem?

+0

Sie greifen es so etwas wie dieses '/ Mitarbeiter/1/2'? – nmfzone

+0

@nmfzone ja, so –

Antwort

0

Versuchen Sie stattdessen:

// named route 
Route::delete('employees/{employee_id}/{catetory_id}', '[email protected]')->name('employees.destroy'); 

// form using named route 
{!! Form::open(['method' => 'DELETE', 'route' => ['employees.destroy', $employee->id, $company->id]]) !!} 
    <div class="form-group"> 
     {!! Form::submit('Remove employee', ['class'=>'btn btn-danger']) !!} 
    </div> 
{!! Form::close() !!} 
0

Sie müssen die Parameter in einem Array senden, versuchen Sie so etwas.

{!! Form::open(['method' => 'DELETE', 'action' => ['[email protected]', [$employee->id, $company->id] ]]) !!} 

      <div class="form-group"> 
       {!! Form::submit('Remove employee', ['class'=>'btn btn-danger']) !!} 
      </div> 

{!! Form::close() !!} 
+0

Jetzt bekomme ich Array zu String-Konvertierung Fehler –

+0

Ja, ich denke, das ist die richtige Antwort. Können Sie den Stack-Trace für Ihren aktuellen Fehler bereitstellen? @FaustasButkus – nmfzone

+0

http://prntscr.com/heffks hier ist es –

0

Der Variablenname sollte mit dem Parameter route übereinstimmen. Versuchen Sie so etwas wie dies in Ihrem Controller:

public function destroy($employee, $company) 
{ 
    Employee::find($employee)->delete(); 

    if($company == 0) 
     return redirect('/employees'); 
    else 
     return redirect('/companies/' . $company . "/edit"); 
    } 
} 
+0

Hat nicht geholfen. Gleicher Fehler bei der Konvertierung von Array zu String –

+0

Nein, der Code ist derselbe wie Ihre Erklärung. Nicht die jordy Garcia Antwort. Ich überprüfe einfach den Kerncode, dass das, was Sie tun, korrekt ist. – nmfzone

+0

Könnten Sie versuchen, 'dd ('etwas')' vor dem 'Mitarbeiter: find()'? Nur um sicherzustellen, dass der Fehler nicht von der 'redirect()' kommt. – nmfzone

Verwandte Themen