将变量从自定义 Laravel Helpers 传递到 Blade 文件

Pass variable from custom Laravel Helpers to Blade file

我正在尝试创建一个助手来集中一个复杂的 Form::select。

我的帮手:

namespace App\Helpers;
use Log;
use App\Countries;

class Address {
    public static function country() {
        $countries = Countries::orderby('name_zh','asc');
        $form = "Form::select('countries', $countries);";
        return $form;
    }
}

我的看法:

{!! Address::country() !!}

我想要这个 select 表单和来自这个助手的 $countries 变量,并在我的视图中显示一个下拉列表。我该怎么做?

在你的助手中使用 Laravel 集体助手创建 select return 它在视图中,这样做:

public static function country() {
    $countries = Countries::orderby('name_zh','asc')
                            ->pluck('name', 'id');
    return Form::select('countries', $countries);
}

在视图中调用方法:

{{ Address::country() }}

或者如果你也想要 $countries 变量,你可以将它从控制器发送到视图,然后再将它发送到助手:

public function controllerFunction() {
    $countries = Countries::orderby('name_zh','asc')
                            ->get();
    return view('yourView')->withCountries($countries);
}

并且在视图中您可以访问此 $countries 然后将其传递给助手 :

{{ Address::country($countries->pluck('name', 'id')) }}

这次的帮手应该是这样的:

public static function country($countries) {
    return Form::select('countries', $countries);
}

不确定是否真正理解你的问题...

但是如果你想将你的 $countries 变量传递给你的视图,你的函数必须简单地 return 这个变量。

public static function country()
{
    $countries = ...;
    return $countries;
}

那么,两个选择:

  • 在你的控制器中使用你的函数

    use App\Helpers\Address;
    // code code code
    public function controllerFunc()
    {
        // code
        $countries = Address::country();
    
        return view('yourview', compact($countries));
    }
    

    并在您的视图中获取它:

    <!-- Dump your $countries (from controller) var -->
    {{ dd($countries) }}
    
  • 在视图中使用您的函数

    <!-- Dump your $countries (from helper) var -->
    {{ dd(\App\Helpers\Address::country()) }}
    

现在,如果你想直接传递你的 select,那么在你的静态函数中,return Form::select('countries', $countries') 就像 Maraboc 说的那样。