2016-11-22 4 views
2

Probleme mit den Links in den Menüs.Laravel 5.3: Routen in Layoutansichten

Momentan erfolgt die Verknüpfung zwischen den Ansichten über Verknüpfungen in Ansichten, die vom Controller gesteuert werden.

Beispiel, in dieser Ansicht

here

wir haben die Show Sicht für Unternehmen.

Der Link, der 'Edit Über Seite Tiago' sagt, sieht wie folgt aus:

<p><a href="{{route('company.companies.about.edit', $company->companyID)}}">Edit About Page {{$company->Company_Name}}</a></p> 

wo unternehmens- $> CompanyID wird grabbend von der Steuerung, die wie folgt aussieht:

public function show($id) 
    { 
     // 

     $company = Company::findOrFail($id); 

     return view('company.companies.show', compact('company')); 

    } 

und hat die folgende Route:

GET|HEAD | company/companies/{company} | company.companies.show | App\Http\Controllers\[email protected] | web,company 

GET|HEAD | company/companies/about/{about}/edit | company.companies.about.edit | App\Http\Controllers\[email protected] | web,company | 

im Moment, wenn ich versuche, zuzugreifen, durch t er im Menü ‚Info‘, ich versuche diese zuzugreifen:

 <li> 
      <a href="{{route('company.companies.about.edit', $company->companyID)}}"><i class="fa fa-dashboard fa-fw"></i> About</a> 
     </li> 

die Code innerhalb einer Layout-Ansicht ist. Der folgende Fehler kommt durch:

here

Was kann ich für einmal Drücken der ‚Info‘, wie in der ‚Über Seite Tiago Bearbeiten‘ auf die gleiche Weise umgeleitet werden?

Auf eine andere Art und Weise fragen, wo kann ich die Information an $ Firma geben, wenn diese Variable innerhalb einer Layoutansicht ist und nicht in einer normalen Ansicht, die ich durch den Controller machen kann?

Es könnte ein grundlegendes Problem zu lösen sein, aber irgendwie blockiert mich.

Jede gegebene Hilfe ist geschätzt

Tiago

+1

Versuchen Sie, die Unternehmensvariable im Controller auszugeben (var_dump ($ name_of_variable)) –

+1

Was meinst du? Zu welcher Steuerung? Da ist eine Layout-Ansicht. Wie wird das für diesen speziellen Fall gemacht? – brotherperes

+3

Sie können auf [Daten mit allen Ansichten] (https://laravel.com/docs/5.3/views#passing-data-to-views) im Abschnitt ** Daten mit allen Ansichten teilen ** zugreifen! hoffe, dass hilft – Maraboc

Antwort

0

ich das gleiche Problem hatte. Ich wurde unter Verwendung verschiedene Verfahren als Standard route .In meine Sicht

<a href="editcompany?id={{$company->companyID}}" class="btn btn-xs btn-info" >EDIT </a> 

in meiner route.php Ich habe

Route::get('editcompany','[email protected]'); 

In meinem Controller Editierfunktion sieht wie folgt aus

public function edit() 
{ 

    $id = Input::get('id'); 
    $company = Company::find($id); 
    return view ('your view',compact('company')); 
} 
+2

Diesen Link gefunden, der einige gute Informationen enthalten könnte. Versuche etwas "Saft" daraus zu machen. http://stackoverflow.com/questions/28608527/how-to-pass-data-to-all-views-in-laravel-5 Im Moment allerdings über: 1- Erstellen Sie einen Anbieter mit Handwerker 2- Verwenden Sie die Unternehmensinformationen in der Boot() -Methode. Warum dies nicht funktionieren würde: Wir würden versuchen, Datensätze Datenbank zu holen, bevor sie existieren (lorey 4. Oktober 15 um 21:41) (es hat 6 upvotes) – brotherperes

2

Als @ Maraboc sagte, Sie können share data with all your views in einem Service-Provider, aber um dies zu tun, müssen Sie wissen, die Werte im Voraus, während des Bootstrapping-Prozesses. Diese Funktionalität wird normalerweise für globale Werte wie Basistitel, Meta-Tags usw. verwendet, die Sie in Ihrer Datenbank oder über eine benutzerdefinierte CMS verwalten möchten.

Es gibt eine andere Möglichkeit, Variablen über verschiedene Ansichten hinweg zu teilen, indem Sie View Composers verwenden, was möglicherweise besser zu Ihrem Anwendungsfall passt.

+1

einen Blick auf es atm, werden Sie wissen lassen wie es ging. Sieht aus wie eine gute Lösung, obwohl – brotherperes

+0

Entschuldigung habe es nicht geschafft, es funktioniert noch mit dieser Lösung. Ich werde es in den nächsten 3 Stunden noch einmal versuchen und euch wissen lassen, wie es gelaufen ist. Jede Hilfe wäre wirklich toll. – brotherperes