Laravel erkennt mobile / Tablet und lädt korrekte Ansichten

7

Ich habe gelesen, wie man verschiedene Pfade oder Namespaces für Ansichten hinzufügt, aber ich denke, das ist keine richtige Lösung für mich. Was ich tun möchte, ist es, einen Basispfad für die Ansicht für mobile Geräte und einen anderen für Desktop-Geräte festzulegen, so dass ich in den View-Controllern keine Änderungen vornehmen muss.

Das wäre toll, um den Pfad in der routes-Datei zu setzen und keinen View-Controller zu berühren. Irgendwelche Ideen dafür? Vielleicht nur Config :: den Ansichtspfad festlegen?

Vielen Dank im Voraus! :)

    
Ayoze Roberto Bernardo 21.05.2014, 09:24
quelle

4 Antworten

7

Ich sehe mir das gleiche Problem an, im Grunde will ich ein Verzeichnis von mobilen Ansichten "anschrauben", ohne meine Controller zu stören (wenn möglich).

Ein Platz, um dies zu tun, ist die Konfiguration in app/config/views.php :

%Vor%

scheint zu funktionieren und gibt Ihnen ein völlig anderes Verzeichnis zum Arbeiten.

Ich werde weiter experimentieren, da es vielleicht einige Überschneidungen zwischen den Desktop- und Mobilgeräten geben wird, aber wir werden sehen.

PS: Agent ~ = Mobile_Detect

    
Adam Marshall 23.09.2014, 14:49
quelle
13

Für Sie Laravel 5-Benutzer in der Zukunft, die nach einer Möglichkeit suchen, Geräte in der Ansicht zu erkennen; Eine andere Möglichkeit besteht darin, einen ServiceProvider zu erstellen - und dann View::share() zu verwenden -, der dann die Geräteerkennung $agent in all Ihren Ansichten verfügbar macht.

Installieren Sie den Agenten

%Vor%

Erstellen Sie den Service Provider

%Vor%

In der config / app.php

%Vor%

in der App / providers / AgentServiceProvider.php

%Vor%

Dann in deinen Ansichten

%Vor%     
timgavin 30.09.2016 22:08
quelle
2

Sie könnten zwei Ordner mobile , desktop in Ihrem Ansichtsordner erstellen. Die zwei Ordner enthalten die gleichen Ansichten (nur die Dateinamen).

%Vor%

Dann können Sie innerhalb des Controllers die Ordnernamen verwenden, um zwischen den Desktop- und mobilen Ansichten (oder anderen, wenn Sie mehr hinzufügen) zu wechseln.

Sie müssen das Gerät der Anfrage nur über PHP auflösen. Du kannst es mit diesem Projekt machen: Ссылка .

Jetzt sieht Ihr Controller wie folgt aus:

%Vor%

Es ist natürlich eine gute Idee, den ($detect->isMobile() ? 'mobile' : 'desktop') zu einer Helfer / statischen Funktion umzuformen. Oder registrieren Sie es als Konfigurationselement in einem Vor-Route-Filter.

    
Sven van Zoelen 21.05.2014 10:29
quelle
1

Wie in einem Kommentar zur akzeptierten Antwort vorgeschlagen (Mobiler Ansichtspfad nur auf Mobilgerät und Fallback auf 'Standardansicht'):

%Vor%

Auf diese Weise überschreiben Sie nur, was Sie brauchen. Dies kann nützlich sein für E-Mails und wenn Sie mehrere Teilansichten haben, die unabhängig von der Gerätekategorie das gleiche HTML haben.

Hinweis: Die Verwendung im Controller ändert sich nicht.

Beispielansichten:

%Vor%     
kiki 10.08.2016 23:44
quelle

Tags und Links