HTML: не работает ссылка для вставки YouTube Video - PullRequest
0 голосов
/ 27 июня 2018

Создание приложения laravel , где пользователи также могут добавлять видео на YouTube (вставлять ссылки).

  1. Как проверить, является ли предоставленная пользователем ссылка видео-ссылкой для вставки YouTube?

  2. Как правильно информировать пользователей о правильной ссылке на YouTube (я имею в виду, например: https://www.youtube.com/embed/Ou7rPcoqXWA как это.

  3. Когда пользователь вводит неправильную ссылку, она теперь показывает

    Возникла исключительная ситуация ErrorException с сообщением «Попытка получить свойство« ** »не-объекта (представление: C: \ xampp \ htdocs \ project \ resources \ views \ front \ posts.blade.php)"

Итак, что я должен сделать, чтобы пользователи знали, что ссылка неверна А ТАКЖЕ Если они поставили неверную ссылку, она не должна отображаться в представлении (внешний интерфейс).

Поле ввода в форме содержит класс, имя, заголовок, местозаполнитель (URL видео YouTube (вставьте только код YouTube для встраивания | например: https://youtu.be/xBht9TG7ySw)) & type.

и это на виду лезвие

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

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Регулярные выражения могут быть полезны для такого рода проверки. Для проверки на стороне клиента :

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

И для проверка на стороне сервера :

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

Чтобы уведомить пользователя о неправильном URL, используйте это (проверка на стороне сервера):

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

Важно:

Примечание. При использовании шаблонов regex / not_regex может потребоваться указать правила в массиве, а не разделители каналов, особенно если регулярное выражение содержит символ канала.

Для третьей части вашего вопроса, пожалуйста, оставьте свой взгляд и контроллер.

0 голосов
/ 27 июня 2018

А как насчет использования API YouTube? .
В конце концов, это будет означать использование некоторого официального сообщения, которое с меньшей вероятностью изменится, чем при анализе некоторой HTML-страницы.

Для получения дополнительной информации: API и инструменты YouTube - Руководство разработчика: PHP

Получение определенной видеозаписи кажется довольно интересным: если вы отправляете запрос на URL-адрес, подобный этому:

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

(Конечно, замена "videoID" на идентификатор видео)

Вы получите несколько каналов ATOM, если видео действительно; и "Неверный идентификатор", если это не

И я настаиваю: таким образом, вы полагаетесь на документированный API , а не на какое-то поведение, которое существует сегодня, но не гарантировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...