我在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);}}
再次感谢您的帮助。
答案 0 :(得分:1)
实现这一目标有很多方法。
您可以将文件包含在app / start / global.php的底部
您可以制作助手类
,你可以做这样的事情
class Embed {
public static function youtube($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;
}
}
并在像这样的刀片中使用它
{{Embed::youtube($artist->video_path)}}
这样,如果你想添加嵌入式vimeo,你也可以添加它并像调用它一样
{{Embed::vimeo($artist->video_path)}}
您可以制作自定义表单宏
Form::macro('youtube', function($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;
});
并像这样称呼它
{{ 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('&',$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');
您可以在应用程序中使用您的功能。