Heim > PHP-Framework > Laravel > Wie teile ich Daten zwischen Ansichten im Laravel5.5-Framework? Zwei Möglichkeiten, Daten zwischen Ansichten zu teilen (mit Code)

Wie teile ich Daten zwischen Ansichten im Laravel5.5-Framework? Zwei Möglichkeiten, Daten zwischen Ansichten zu teilen (mit Code)

不言
Freigeben: 2018-08-02 14:11:39
Original
3435 Leute haben es durchsucht

LaravelEs gibt zwei Möglichkeiten, Daten zwischen Ansichten im Framework zu teilen. Eine wird mit der View-Fassade-Share()-Methode und die andere mit der View-Fassade-Composer()-Methode implementiert Es gibt zwei Methoden. Was ist die Implementierung? Werfen wir einen Blick auf den Inhalt des nächsten Artikels.

Zuallererst ist Folgendes zu beachten: : Die View-Fassade wird verwendet, um auf die zugrunde liegende Implementierung von IlluminateContractsViewFactory

View zuzugreifen Fassaden-Share( )-Methode

Manchmal müssen Sie Datenfragmente zwischen allen Ansichten teilen. In diesem Fall können Sie die Share-Methode der Ansichtsfassade verwenden.

1. Im Allgemeinen erstelle ich einen Basiscontroller BaseController.php unter apphttpControllersxx

<?php
namespace App\Http\Controllers\ExtMan;

use Illuminate\Routing\Controller;

class BaseController extends Controller
{
    public function __construct(\Auth $auth)
    {
        $this->initViewShare();    //视图共享数据
    }
    /**
     *  视图共享数据方法
     */
    public function initViewShare()
    {
        view()->share('action_name',get_action_name()); //当前URL的方法器名
     }
}


//视图使用 
//共享视图一般都是在layout中
{{ $action_name }}
Nach dem Login kopieren

get_action_name() ist eine benutzerdefinierte Funktion.

Tipps:
Erstellen Sie appHelpersExtmanFun.php, führen Sie Autoload in Composer.json ein

 "files":[
     "app/Helpers/ExtmanFun.php"
 ]
Nach dem Login kopieren

Führen Sie „composer dump-autoload“ aus und es wird automatisch geladen

2, rufe share()

<?php
namespace App\Providers;
use View;
class AppServiceProvider extends ServiceProvider
{
    /**
     * 启动所有应用服务
     *
     * @return void
     */
    public function boot()
    {
        View::share(&#39;key&#39;, &#39;value&#39;);
        //也可使用
        view()->share(&#39;name&#39;,&#39;共享数据片段&#39;);
    }
}
Nach dem Login kopieren

viewfacade Composer() Methode

<🎜 in der Boot-Methode des AppServiceProvider-Dienstanbieters (oder neuen Anbieters) auf ) >Der View Composer ist eine Rückruffunktion oder Klassenmethode, wenn die Ansicht gerendert wird, wenn Sie die Daten der Ansicht jedes Mal binden müssen, wenn Sie die Ansicht rendern, z. B. Benutzeranmeldeinformationen. Sie können Composer() verwenden, um die Logik an einem separaten Ort zu organisieren.

In diesem Beispiel registrieren wir den View Composer beim AppServiceProvider-Dienstanbieter
Der Anbietercode lautet wie folgt:

<?php
namespace App\Providers;

#use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // 使用基于类方法
        // 第一个参数可以指定共享给那个视图,多个视图用数组,共享到全部视图可以用 *
        // 或者某个目录下所有视图 
        view()->composer(
            //&#39;*&#39;, &#39;App\Http\ViewComposers\AuthComposer&#39;
            //[&#39;extman.home, welcome&#39;], &#39;App\Http\ViewComposers\AuthComposer&#39;
            [&#39;extman.*&#39;], &#39;App\Http\ViewComposers\AuthComposer&#39;
        );

        //使用基于回调函数
        view()->composer(&#39;*&#39;,function($view){
            $view->with(&#39;user&#39;,array(&#39;name&#39;=>&#39;test&#39;,&#39;avatar&#39;=>&#39;/path/to/test.jpg&#39;));
        });
    }
other code
}
Nach dem Login kopieren

Wenn Sie einen neuen Dienstanbieter erstellen, um die View Composer-Registrierung einzuschließen, Sie müssen diesen Dienstanbieter zum Provider-Array der Konfigurationsdatei config/app.php hinzufügen

Der View Composer wurde bisher registriert und die AuthComposer@compose-Methode wird jedes Mal ausgeführt, wenn alle Ansichten im Extman angezeigt werden Verzeichnis werden gerendert.

Definieren Sie die Ansichts-Composer-Klasse AppHttpViewComposersAuthComposer.php

<?php
namespace App\Http\ViewComposers;

use Illuminate\View\View;
use Illuminate\Repositories\UserRepository;

class AuthComposer
{
    protected $users;

    public function __construct(UserRepository $users)
    {
        // 依赖注入通过服务容器自动解析...
        $this->users = $users;
    }

    //绑定数据到视图
    public function compose(View $view)
    {
        $user_info = \Auth::user();
        $view->with(&#39;motto&#39;, $user_info);
        $view->with(&#39;count&#39;, $this->users->count());
    }
}
Nach dem Login kopieren
Bevor die Ansicht gerendert wird, wird die Compose-Methode der AuthComposer-Klasse aufgerufen und die IlluminateViewView-Instanz in die Methode eingefügt, damit sie mit der Methode verknüpft werden kann kann verwendet werden, um Daten an die Anzeige zu binden.

Alle View Composer werden über den Service-Container aufgelöst, sodass Sie einen Hinweis auf die Abhängigkeiten eingeben können, die in den Konstruktor des View Composers eingefügt werden müssen.

Empfohlene verwandte Artikel:

Detaillierte Erläuterung der gemeinsamen Daten zwischen Laravel-Ansichten und der View Composer_php-Instanz

Laravel 5 Framework-Lernen Richtungsansicht überträgt Daten, Laravel-Framework

Das obige ist der detaillierte Inhalt vonWie teile ich Daten zwischen Ansichten im Laravel5.5-Framework? Zwei Möglichkeiten, Daten zwischen Ansichten zu teilen (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage