在Laravel 4中调用未定义的函数

时间:2013-06-28 06:39:03

标签: function laravel laravel-4

我在Laravel 4中为一个实体“艺术家”设置了一个资源;在ArtistController中,我添加了一个我自己的函数youtube_embed。当我在我的视图(显示视图)中调用此函数时,它表示它是未声明的。你知道为什么我收到这个错误吗?谢谢。

以下是代码:

ArtistController中的

 public function youtube_embed($vari) {

        $step1=explode('v=', $vari);
        $step2 =explode('&',$step1[1]);
        $iframe ='<iframe style="border:4px solid #41759d" width="460" height="259" src="http://www.youtube.com/embed/'.$step1[1].'" frameborder="0" allowfullscreen></iframe>';

        return $iframe;

    }

在show.blade.php中:

{{youtube_embed($artist->video_path);}}

再次感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

实现这一目标有很多方法。

  • 您可以将文件包含在app / start / global.php的底部

  • 您可以制作助手类

    1. 在app中创建一个名为“helpers”的文件夹以及一个名为Embed.php
    2. 的文件
    3. 将“app / helpers”添加到“autoload.classmap”部分的composer.json中。小心逗号。
    4. 在app / start / global.php中,在ClassLoader :: addDirectories数组中添加app_path()。'/ helpers'。此步骤不是必需的,但它会阻止您在每次添加新助手时执行composer dump-autoload。
    5. 在app / helpers / Embed.php中
    6. ,你可以做这样的事情

      class Embed {
        public static function youtube($vari) {
      
          $step1 = explode('v=', $vari);
          $step2 = explode('&amp;', $step1[1]);
          $iframe = '<iframe style="border:4px solid #41759d" width="460" height="259" src="http://www.youtube.com/embed/'.$step1[1].'" frameborder="0" allowfullscreen></iframe>';
      
          return $iframe;
        }
      }
      
    7. 并在像这样的刀片中使用它

      {{Embed::youtube($artist->video_path)}}
      

      这样,如果你想添加嵌入式vimeo,你也可以添加它并像调用它一样

      {{Embed::vimeo($artist->video_path)}}
      
    8. 您可以制作自定义表单宏

      Form::macro('youtube', function($vari) {
         $step1 = explode('v=', $vari);
         $step2 = explode('&amp;', $step1[1]);
         $iframe = '<iframe style="border:4px solid #41759d" width="460" height="259" src="http://www.youtube.com/embed/'.$step1[1].'" frameborder="0" allowfullscreen></iframe>';
      
          return $iframe;
      });
      

      并像这样称呼它

      {{ Form::youtube($artist->video_path) }}
      

有这么多可能性! :)

答案 1 :(得分:0)

看起来你需要的只是一个帮手。我会在我的应用程序中执行此操作。

首先,创建一个文件夹&#34; helpers&#34;在你的&#34; app&#34;文件夹中。

然后创建一个名为&#34; common.php&#34;的文件。在&#34;助手&#34;内夹。将您的函数放在这个文件中:

    <?php

        if ( ! function_exists('image'))
        {
            function youtube_embed($vari)
            {
                 $step1=explode('v=', $vari);
                         $step2 =explode('&amp;',$step1[1]);
                         $iframe ='<iframe style="border:4px solid #41759d" width="460" height="259" src="http://www.youtube.com/embed/'.$step1[1].'" frameborder="0" allowfullscreen></iframe>';

                         return $iframe;
            }
         }

接下来,在route.php中包含此文件。

  <?php

      include('libraries/common.php');

您可以在应用程序中使用您的功能。