【问题标题】:Laravel Models/function, how to make a main "function"Laravel 模型/功能,如何制作一个主要的“功能”
【发布时间】:2022-01-11 05:55:44
【问题描述】:

伙计们,我创建了一个 Laravel 项目。 我有师傅。始终包含用户数据的布局。 所以我有一个导航栏,例如 $user->name。

在每个控制器中,我需要添加 User 模型以及 where 函数。

$user = User::find(auth()->user()->id)

也许这个例子不好,但我也将公司包含在主文件中,所以它显示在导航栏中。

有没有一种方法,我不需要重复这个过程?所以我并不总是在控制器中需要它。

感谢阅读。

【问题讨论】:

  • 你不需要那个,在你的刀片上你可以使用auth()助手来获取用户的任何数据。喜欢,对于电子邮件auth()->user()->email
  • 只使用 auth()->user();它为您提供当前用户对象

标签: laravel model-view-controller


【解决方案1】:

在 laravel 中,您从主控制器扩展每个类,因此最好在主类中创建这样的方法

子控制器

class testController extends Controller
{
   // as you can see its extending so go into Controller class
}

父类,所以我在这里创建了一个 getName 方法。如果你想通过模式获取值

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;


class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    private $current_user_name = 'test';

    public function getName()
    {
        return ($this->current_user_name);
    }
}

现在回到子控制器并在视图中传递这个方法

class testController extends Controller
{
       public function index()
      {
        return view('', $data = ['name' => $this->getName()]);
      }
}

希望这能涵盖您的查询。这样你就不需要在每个控制器中重复你的代码了。

【讨论】:

    【解决方案2】:

    您也可以在刀片模板中获取数据,例如用户信息,但是如果您需要更复杂的数据并且不想在刀片中放入逻辑,则可以使用此方法(AppServiceProvider.php):

    public function boot()
    {
        view()->composer('your_mast_layout', function($view)
        {
            $data = ...
            $view->with('variable_name', $data);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-18
      • 2011-02-07
      • 1970-01-01
      • 2020-12-28
      • 2011-06-18
      • 2015-04-19
      • 1970-01-01
      • 2020-08-12
      相关资源
      最近更新 更多