2015-10-13 70 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相同的新类,我不应该创建一个使用该类的新函数,而是添加一个新元素? –

相关问题