2015-10-13 46 views
0

關注此主題Use a custom function everywhere in the website我需要一些幫助來完成已經開始的工作。添加您自己的helpers.php到composer.json

所以我在app文件夾中創建一個文件夾:海關 然後,我創建了一個具有下面的代碼helpers.php文件:

<?php 
use Illuminate\Support\Str; 

if (! function_exists('str_slug')) { 
    /** 
    * Generate a URL friendly "slug" from a given string. 
    * 
    * @param string $title 
    * @param string $separator 
    * @return string 
    */ 
    function my_slug($title, $separator = '-') 
    { 
     $title = str_replace('\'','_',$title); 
     return Str::slug($title, $separator); 
    } 
} 

我看了,我現在必須更新我的composer.json,特別是自動加載的部分基本上是:

"autoload": { 
     "classmap": [ 
      "database" 
     ], 
     "psr-4": { 
      "App\\": "app/" 
     } 
    }, 

我不明白,我現在應該怎麼辦... PSR-4已經表示,整個應用程序文件夾被自動加載,不是嗎?

我也嘗試把helpers.php的完整路徑,但它也沒有工作。

我在做什麼錯?

回答

2

你的自動加載應該有類似的東西:

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/" 
    }, 
    "files": [ 
     "app/helpers.php" 
    ] 
}, 

其中files是你的自定義文件。也正如在中提到的那樣,在網站中的任何地方使用自定義函數問題我建議您使用特徵來處理例如trait StringSluggify。它保持OOP的方式。

+0

謝謝,但我仍然有一個問題:'調用未定義的函數App \ Http \ Controllers \ my_slug()'。我不知道什麼是特質...我會稍後再看看。 –

+0

@Ennicolem你如何使用函數'my_slug()'?使用指針'$ this-> my_slug()'還是不是? –

+0

我在做:'$ input = Request :: all(); \t $出版商=新發布商([ \t \t '名稱'=> $輸入[ '名稱'], \t \t '蛞蝓'=> my_slug($輸入[ '名稱'], ' - ') \t ]); \t $ publisher-> save();' –

0

在您的視圖{{my_slug($ collection-> value)}}或您的控制器中使用命名空間App \ customs \ my_slug($ value)或將\ App \ customs添加到您的頂部控制器,然後my_slug($值)

1
  1. 創建的app/一個文件夾裏面叫Helpers
  2. 裏面的app/Helpers創建自定義類

    namespace App\Helpers; 
    
    class FooHelper{ 
    
        public static function bar(){ 
         return 'bar'; 
        } 
    } 
    
  3. 運行composer dump-autoload更新自動加載。

在這裏,您現在可以使用您的輔助功能,如:

$bar = \App\Helper\FooHelper::bar(); 

如果你的計劃是附加門面,然後在config/app.php編輯外牆陣列像這樣:

'Foo' => \App\Helpers\FooHelper::class 

現在你可以打電話給你的功能,如:

public function controllerFunction(){ 
    $bar = \Foo::bar(); 
} 
+0

嗨,這是非常有用的,但不是真的在我的情況。嗯,我猜...已經有一個班級的slu,,我想要改進它。既然Laravel提供了函數,爲什麼不創建一個與Laravel相同的新類,我不應該創建一個使用該類的新函數,而是添加一個新元素? –

相關問題