0

我在 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);}}

再次感谢你的帮助。

4

2 回答 2

1

有很多方法可以实现这一点。

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

  • 你可以做一个助手类

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

      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;
        }
      }
      

    并像这样在刀片中使用它

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

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

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

    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) }}
    

这么多的可能性!:)

于 2013-06-28T16:02:48.877 回答
0

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

首先,在“app”文件夹中创建一个文件夹“helpers”。

然后在“helpers”文件夹中创建一个名为“common.php”的文件。把你的函数放在这个文件中:

    <?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');

您可以在应用程序中使用您的函数。

于 2013-06-28T08:56:52.737 回答