【问题标题】:HTML: Input YouTube Video embed link not workingHTML:输入 YouTube 视频嵌入链接不起作用
【发布时间】:2018-06-27 16:45:56
【问题描述】:

构建一个 laravel 应用,用户还可以在其中添加 youtube 视频(嵌入链接)。

  1. 如何验证用户提供的链接是否真的是嵌入的youtube视频链接?

  2. 告知用户正确的 youtube 链接的正确方法是什么(我的意思是例如:https://www.youtube.com/embed/Ou7rPcoqXWA 像这样。

  3. 当用户输入错误的链接时,它现在显示

    ErrorException 抛出消息“尝试获取非对象的属性 '**'(视图:C:\xampp\htdocs\project\resources\views\front\pos​​ts.blade.php)”

那么,我应该怎么做才能让用户知道链接不正确 和 如果他们放置了错误的链接,它不应该出现在视图(前端)中。

表单中的输入字段有类、名称、标题、占位符(YouTube 视频 URL(仅粘贴嵌入的 youtube 代码 | 例如:https://youtu.be/xBht9TG7ySw))和类型。

&这是在视图中刀片

iframe src="{{$post->video}}" frameborder="0" allowfullscreen="allowfullscreen" height="315" width="100%"></iframe>

【问题讨论】:

    标签: html css laravel


    【解决方案1】:

    Regular Expressions 可用于此类验证。 对于client-side 验证:

    function validateYoutubeURL(url){
        var regex=/https?:\/\/youtu(be\.com|\.be)\/.+/;
        return regex.test(url.toLowerCase());
    }
    

    对于server-side validation

    public function store(Request $request){
        $this->validate($request, [
           'field_name'=> [
                'required',
                'regex:/https?:\/\/youtu(be\.com|\.be)\/.+/',
            ]
        ]);
    }
    

    为了通知用户错误的 URL,使用this(服务器端验证):

    @if ($errors->any())
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif
    

    重要:

    注意:使用 regex / not_regex 模式时,可能需要在数组中指定规则而不是使用管道分隔符,尤其是当正则表达式包含管道字符时。

    对于您问题的第三部分,请发布您的视图和控制器。

    【讨论】:

      【解决方案2】:

      使用 Youtube 的 API 怎么样? .
      毕竟,这意味着使用一些官方,这比解析一些 HTML 页面更不可能改变。

      欲了解更多信息:YouTube APIs and Tools - Developer's Guide: PHP

      Retrieving a specific video entry 看起来很有趣:如果您向这样的 URL 发送请求:

      http://gdata.youtube.com/feeds/api/videos/videoID
      

      (当然是用视频的 ID 代替“videoID”)

      如果视频有效,您将获得一些 ATOM 提要;如果不是,则为“无效的 id”

      而且,我坚持:通过这种方式,您依赖于记录在案的 API,而不是依赖于今天存在但没有保证的某种行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-07
        • 1970-01-01
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        相关资源
        最近更新 更多