いくつかのcurrentUser()
関数を作成したい場合、oauth=ビューまたはコントローラーで使用できる場所で行っています(Railsを考えて、_helper_method: current_user
_アプリケーションコントローラ内)。
ヘルパーフォルダーを作成し、そこに関数を追加するように私が読んだすべての状態は、その後、あなたはそれを行うことができます_Helpers::functionName
_これはこれを行う正しい方法ですか?
ブレードテンプレートとコントローラーで使用できるヘルパー関数を作成する「laravelの方法」とは何ですか?
App/HelpersディレクトリにAnythingHelper.phpという名前の新しいファイルを作成します。私のヘルパーの例は次のとおりです。
<?php
function getDomesticCities()
{
$result = \App\Package::where('type', '=', 'domestic')
->groupBy('from_city')
->get(['from_city']);
return $result;
}
次のコマンドでヘルパーのサービスプロバイダーを生成します
php artisan make:provider HelperServiceProvider
新しく生成されたHelperServiceProvider.phpの登録関数に次のコードを追加します
require_once app_path('Helpers/AnythingHelper.php');
config/app.phpにこのサービスプロバイダーをロードすると完了です。
'App\Providers\HelperServiceProvider',
グローバル関数ファイルを作成する簡単で効率的な方法は、Composerから直接自動ロードすることです。 composer=のautoloadセクションは、自動的にロードされるfiles
配列を受け入れます。
好きな場所に_functions.php
_ファイルを作成します。この例では、_app/Helpers
_の中に作成します。
関数を追加しますが、notを実行しますクラスまたは名前空間を追加します。
_<?php
function global_function_example($str)
{
return 'A Global Function with '. $str;
}
_
autoload
セクション内の_composer.json
_に次の行を追加します。
_"files": ["app/Helpers/functions.php"]
_
Laravel 5の例:
_"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": ["app/Helpers/functions.php"] // <-- Add this line
},
_
_composer dump-autoload
_を実行します
できた!これで、ブレードビューを含むアプリケーションの任意の部分からglobal_function_example('hello world')
にアクセスできます。
多くの場合、アプリケーション全体でグローバルにアクセスするユーティリティ機能を必要とする自分を見つけるでしょう。 laravel=から借用すると、カスタム関数で機能を拡張できるデフォルトのヘルパーが作成されます。
名前空間に煩わされたくないので、クラスではなくファイルが好きです。クラスの接頭辞なしでその関数にアクセスできるようにしたいので、greeting('Brian');
ではなくHelper::greeting('Brian');
Laravelはヘルパーを使用します。
ファイル: _app/Support/helper.php
_
composer.json
__{
...
"autoload": {
"classmap": [
"database"
],
"files": [
"app/Support/helpers.php"
],
"psr-4": {
"App\\": "app/"
}
},
...
}
_
_<?php
if (!function_exists('greet')) {
/**
* Greeting a person
*
* @param string $person Name
* @return string
*/
function greet($person)
{
return 'Hello ' . $person;
}
}
_
その関数にアクセスする前に、ファイルを自動ロードすることを忘れないでください:_composer dump-autoload
_
_$ php artisan tinker
Psy Shell v0.8.17 (PHP 7.0.6 ΓÇö cli) by Justin Hileman
>>> greet('Brian');
=> "Hello Brian"
>>> exit
Exit: Goodbye.
_
_<p>{{ greet('Brian') }}</p>
_
単純な関数の代わりにブレードディレクティブを使用したい場合があります。 AppServiceProviderの起動メソッドにBladeディレクティブを登録します:_app/Providers/AppServiceProvider.php
_
_public function boot()
{
// ...
Blade::directive('greet', function ($expression) {
return "<?php echo greet({$expression}); ?>";
});
}
_
使用法:<p>@greet('Brian')</p>
注:キャッシュビューをクリアする必要があるかもしれません_php artisan view:clear
_