@laravel_pro

Страница 1730 из 2014
Aleksandr
13.08.2018
06:00:17
Timur
13.08.2018
06:14:34


как в одном канале несколько ивентов слушать?

Google
Timur
13.08.2018
06:15:02
чтобы не дублировать вот так код

Станислав
13.08.2018
06:25:12
Как добавлять в связующую таблицу данные правильно?)

Vladimir
13.08.2018
06:26:09
Уже решил обратным циклом

Станислав
13.08.2018
06:26:23
У меня связь многие ко многим, продуктов к характеристикам , и связующая таблица ProductCharacteristic

Obazure
13.08.2018
06:46:52
Ребят, сорри.. можно я тут всю портянку вылью

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\UploadedFile; use Pion\Laravel\ChunkUpload\Exceptions\UploadMissingFileException; use Pion\Laravel\ChunkUpload\Handler\AbstractHandler; use Pion\Laravel\ChunkUpload\Handler\HandlerFactory; use Pion\Laravel\ChunkUpload\Receiver\FileReceiver; class UploadController extends Controller { /** * Handles the file upload * * @param Request $request * * @return \Illuminate\Http\JsonResponse * * @throws UploadMissingFileException */ public function upload(Request $request) { // create the file receiver $receiver = new FileReceiver("file", $request, HandlerFactory::classFromRequest($request)); // check if the upload is success if ($receiver->isUploaded()) { // receive the file $save = $receiver->receive(); // check if the upload has finished (in chunk mode it will send smaller files) if ($save->isFinished()) { // save the file and return any response you need return $this->saveFile($save->getFile()); } else { // we are in chunk mode, lets send the current progress /** @var AbstractHandler $handler */ $handler = $save->handler(); return response()->json([ "done" => $handler->getPercentageDone(), ]); } } else { throw new UploadMissingFileException(); } } /** * Saves the file * * @param UploadedFile $file * * @return \Illuminate\Http\JsonResponse */ protected function saveFile(UploadedFile $file) { $fileName = $this->createFilename($file); // Group files by mime type $mime = str_replace('/', '-', $file->getMimeType()); // Group files by the date (week // $dateFolder = date("Y-m-W"); /*ЗАКРЫЛ*/ // Build the file path //$filePath = "upload/{$mime}/{$dateFolder}/";/*ЗАКРЫЛ*/ $filePath = "upload/"; $finalPath = storage_path("app/".$filePath); // move the file name $file->move($finalPath, $fileName); return response()->json([ 'path' => $filePath, 'name' => $fileName, 'mime_type' => $mime ]); } /** * Create unique filename for uploaded file * @param UploadedFile $file * @return string */ protected function createFilename(UploadedFile $file) { $extension = $file->getClientOriginalExtension(); $filename = str_replace(".".$extension, "", $file->getClientOriginalName()); // Filename without extension $filename = $this->translit($filename); // Add timestamp hash to name of the file $filename .= "_" . md5(time()) . "." . $extension; return $filename; } function translit($s) { $s = mb_strimwidth($s,0,20); $s = (string) $s; // преобразуем в строковое значение $s = strip_tags($s); // убираем HTML-теги $s = str_replace(array("\n", "\r"), " ", $s); // убираем перевод каретки $s = preg_replace("/\s+/", ' ', $s); // удаляем повторяющие пробелы $s = trim($s); // убираем пробелы в начале и конце строки $s = function_exists('mb_strtolower') ? mb_strtolower($s) : strtolower($s); // переводим строку в нижний регистр (иногда надо задать локаль) $s = strtr($s, array('а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'e','ж'=>'j','з'=>'z','и'=>'i','й'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shch','ы'=>'y','э'=>'e','ю'=>'yu','я'=>'ya','ъ'=>'','ь'=>'')); $s = preg_replace("/[^0-9a-z-_ ]/i", "", $s); // очищаем строку от недопустимых символов $s = str_replace(" ", "_", $s); // заменяем пробелы знаком минус return $s; // возвращаем результат } }

Route::post('upload', 'DependencyUploadController@uploadFile'); Route::post('upload-advanced', 'UploadController@upload');

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\UploadedFile; use Pion\Laravel\ChunkUpload\Exceptions\UploadMissingFileException; use Pion\Laravel\ChunkUpload\Handler\AbstractHandler; use Pion\Laravel\ChunkUpload\Handler\HandlerFactory; use Pion\Laravel\ChunkUpload\Receiver\FileReceiver; class DependencyUploadController extends UploadController { /** * Handles the file upload * * @param FileReceiver $receiver * * @return \Illuminate\Http\JsonResponse * * @throws UploadMissingFileException * */ public function uploadFile(FileReceiver $receiver) { // check if the upload is success if ($receiver->isUploaded()) { // receive the file $save = $receiver->receive(); // check if the upload has finished (in chunk mode it will send smaller files) if ($save->isFinished()) { // save the file and return any response you need return $this->saveFile($save->getFile()); } else { // we are in chunk mode, lets send the current progress /** @var AbstractHandler $handler */ $handler = $save->handler(); return response()->json([ "done" => $handler->getPercentageDone(), ]); } } else { throw new UploadMissingFileException(); } } }

вкратце. у меня есть upload controller и зависимый от него dependency upload controller

суть кода: отобразить форму для загрузки видео файла 1Гб-4Гб, и загрузить его разбив на чанки по 20-30 мб (где то можно было регулировать)

вот create video view

Google
Obazure
13.08.2018
06:54:09
@extends('layouts.app') @section('content') <div class="row"> <div class="col s12 "> <div class="col-content"> @if(Session::has('message')) <div class="card white"> <div class="card-content black-text"> <span class="card-title">{{ Session::get('message') }}</span> </div> </div> @endif <div class="card white"> <div class="card-content black-text"> <h5> Загрузка нового видео: </h5> @if (count($errors) > 0) <div class="col s12"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form id="create-video-form" onsubmit="return submit_on_click()" action="{{route('video.store')}}" method="post" enctype="multipart/form-data"> {{ csrf_field() }} <div class="input-field col s8"> @if ($errors->has('title')) <span><strong>{{ $errors->first('title') }}</strong></span> @endif <input id="video-title" type="text" name="title" class="validate {{ $errors->has('title') ? 'invalid' : '' }}" value="{{ old('title') }}" oninput="make_slug()" required> <label for="video-title">(!) Название видео</label> </div> <div class="input-field col s4"> @if ($errors->has('slug')) <span><strong>{{ $errors->first('slug') }}</strong></span> @endif <input id="video-slug" type="text" name="slug" class="validate {{ $errors->has('slug') ? 'invalid' : '' }}" value="{{ old('slug') }}" placeholder="(!) Ссылка" disabled required> {{--<label for="video-slug">Ссылка</label>--}} </div> <div class="col s12"> @if ($errors->has('published')) <span><strong>{{ $errors->first('published') }}</strong></span> @endif <input id="published" type="checkbox" name="published" > <label for="published">Опубликовано</label> </div> <div class="input-field col s12"> @if ($errors->has('description')) <span><strong>{{ $errors->first('description') }}</strong></span> @endif <textarea id="video-description" name="description" required

class="validate {{ $errors->has('description') ? 'invalid' : '' }}" > {{ old('description') }} </textarea> <label for="video-description">(!) Описание</label> </div> <div class=" input-field col s12"> @if ($errors->has('videofile')) <span><strong>{{ $errors->first('videofile') }}</strong></span> @endif <input type="hidden" name="videofile" id="videofile" value="null" required> <div class="text-center"> <input id="fileupload" type="file" name="file" data-url="{{ url('upload') }}" style="display: inline;"> <ul id="file-upload-list" class="list-unstyled"> </ul> </div> </div> <div id="total-status" class="col s12"></div> <div class="input-field"> <input id="submit" type="submit" class="waves-effect waves-light btn indigo darken-1 right sbtn" value="Сохранить"> </div> </form> <p>(!) - Важно для заполнения!</p> </div> </div> </div> </div> </div> <script> CKEDITOR.replace('video-description'); var slug_lock = false; function submit_on_click(){ if($('input[name="videofile"]').val()=='null') { $('#total-status').html('Вы забыли загрузить файл.'); return false; } $('#video-slug').prop("disabled", false); // Element(s) are now enabled. return true; } $(document).ready(make_slug()); function make_slug(){ if (!slug_lock){ var slug = getSlug($('#video-title').val()); if (slug!='') { var xhr = new XMLHttpRequest(); xhr.open('GET', '{{route('check.slug')}}?q=' + slug, false); xhr.send(); if (xhr.status != 200) { var now = new Date(); var dateTime = ""+now.getFullYear()+(now.getMonth()+1)+now.getDate()+now.getHours()+now.getMinutes()+now.getSeconds(); slug=slug+dateTime; } else { slug = xhr.responseText; } } document.getElementById('video-slug').setAttribute('value',slug); } } </script> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"> <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script> {{--<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>--}} <script src="{{ asset('assets/vendor/blueimp-file-upload/js/vendor/jquery.ui.widget.js') }}"></script> <script src="{{ asset('assets/vendor/blueimp-file-upload/js/jquery.iframe-transport.js') }}"></script> <script src="{{ asset('assets/vendor/blueimp-file-upload/js/jquery.fileupload.js') }}"></script> <script src="{{ asset('assets/js/file-uploader.js') }}"></script> <script>hljs.initHighlightingOnLoad();</script> @endsection @section('script') <script type="text/javascript" src="{{ asset('assets/ckeditor/ckeditor.js') }}"></script> <script type="text/javascript" src="{{ asset('assets/js/speakingurl.min.js') }}"></script> {{--<link rel="stylesheet" href="{{ asset('assets/css/app.css')}}"/>--}} @endsection

Maxim
13.08.2018
06:54:31
подскажите как получить распечатку sql-запроса при исполнении метода fill() ?

Artur
13.08.2018
06:55:48
Почоны, хапнул горюшка Делал кто для spa в отдельном ремо oAuth авторизацию?

Nikita
13.08.2018
06:56:11
Кто-то серьезно будет читать эти портянки кода в телеграме?) Без подсветки синтаксиса, кривыми переносами и т.д.)

Artur
13.08.2018
06:56:50
По всему социети размазаны прямые общения с реквестом теперь феймбуку не нравится на колбэк перепроверке релирект бесит прям

Провайдеры в приватах

Ощущений полные штаны

Nick
13.08.2018
06:57:54
Привет всем. Можете помочь. Как отправить email, используя mailable с полем from в таком виде example.com@mailgun.org on behalf of Example test@example.com. Мне нужно поле on behalf of

Nikita
13.08.2018
06:58:03
подскажите как получить распечатку sql-запроса при исполнении метода fill() ?
Какого метода fill? Разве у querybuilder'a есть такой метод?

Maxim
13.08.2018
06:59:12
Nikita
13.08.2018
06:59:25
У модели $this->model->fill($data)
и что делает этот метод?)

Maxim
13.08.2018
07:00:48
и что делает этот метод?)
Кажется, я забыл про save)

Artur
13.08.2018
07:01:19
Save тоже не простой

Maxim
13.08.2018
07:01:24
После трехмесячного перерыва сел снова за Laravel)

Artur
13.08.2018
07:01:27
Там есть проверка с original

Nikita
13.08.2018
07:01:47
Это модель же
fill "заполняет" модель, причем тут sql запрос

Google
Maxim
13.08.2018
07:04:48
fill "заполняет" модель, причем тут sql запрос
да-да, наполняем и сохраняем запись в БД, забыл далее вызвать save()

Artur
13.08.2018
07:04:57
А как же микросервисы как же spa как де это все...

?

Nikita
13.08.2018
07:05:35
Та никто не понял что ты спросил мне кажется))

Миша
13.08.2018
07:05:43
Чуваки помогите, меня тут стерва замучала. Я про доктрину. Как в доктрине делать аналог скоупов из Лары?

дублирование кода меня не прикалывает в репозиториях

я думал делать приватные функции, которые модифицируют QueryBuilder. Но гребанные алиасы, не позволяют это норм провернуть(

не уверен что это прям по Ларе, но тут тоже спрошу

Artur
13.08.2018
07:06:34
Та никто не понял что ты спросил мне кажется))
Чего уж непонятного: oAuth когда фронт и апи на разных гит-проектах и доменах

Общение пр json api

Миша
13.08.2018
07:08:12
Чего уж непонятного: oAuth когда фронт и апи на разных гит-проектах и доменах
кажется я что то такое делал, помню был тот ещё гемор, особенно если на разных доменах

Сергей
13.08.2018
07:33:10
Парни, привет всем. Как редиректнуть все url с index.php на тот же url, но без index.php? Может вопрос и не laravel, но всё же, что-то не выходит)

Vladislav
13.08.2018
07:35:39


Саша
13.08.2018
07:36:29
Это в Sleeping Owl?

Если в ней, то это у них незакрытый баг

Andrew
13.08.2018
07:37:02
скорее всего ты угазал метод гет а надо было пост или делет

Саша
13.08.2018
07:37:16
Там не генерируется <form></form> вокруг кнопки

Vladislav
13.08.2018
07:37:56
Это в Sleeping Owl?
нет, это обычный шаблон adminlte

Google
Саша
13.08.2018
07:38:57
нет, это обычный шаблон adminlte
Всё равно советую проверить - кнопка удаления должна быть (как и остальные) обёрнута в <form></form> - очень знакомая ситуация

Nikita
13.08.2018
07:39:43
или отправляешь get запрос вместо post, или в роутинге стоит get вместо post

DDiimmkkaass
13.08.2018
07:43:39
там же ясно пишет, что тип запроса не тот

Admin
ERROR: S client not available

Миша
13.08.2018
07:52:59
У меня и домены рпзные и апи не форма
Не представляю как ты выкрутишься с разными доменами, по мне так это не возможно. Ты просто не сможешь получить доступ к ключу с другого домена.

Artur
13.08.2018
07:53:29
Я уже пряти сделал

Просто сталкиваюсь со все новыми трудностями вот и думаю мож кто уже навелосипедил

Станислав
13.08.2018
08:05:26
Что можно сделать если у меня есть связующая таблица, и в ней есть еще одно поле которое нужно заполнять рандомно..

$product->characteristic()->attach($characteristic);

Можно сюда параметр как то добавить?)

Nikita
13.08.2018
08:07:08
https://laravel.com/docs/5.6/eloquent-relationships#many-to-many Retrieving Intermediate Table Columns

Владислав
13.08.2018
08:07:15
Можно сюда параметр как то добавить?)
Нужно документацию открыть, там написано. В разделе связей, ctrl+f по attach

Андрей
13.08.2018
08:25:13
ничего, я на это 40 секунд потратил. а на то чтоб поставить sleepingowladmin.ru и сделать одну табличку - примерно 12 часов
Вп бери, сова ставится пару минут и к модели секция подвязывается ещё пару. Ты с 12 часами спи... обманул

mr
13.08.2018
08:33:39
как сдедать рефреш только одной миграции ?

mr
13.08.2018
08:35:23
migrate:rollback?
хз, ну у меня структура одной таблицы поменялась

Nikita
13.08.2018
08:36:14
если у тебя проект уже на проде то делай новую миграцию в которой вноси изменения в структуру таблицы

Google
mr
13.08.2018
08:36:16
только вчела лару открыл)

Alex
13.08.2018
08:36:18


mr
13.08.2018
08:37:18
Yura
13.08.2018
08:37:35
Проверь неймспейс

Андрей
13.08.2018
08:37:45
Дамп автолоад, проверить неймспейсы

Нужно TaskController

Пеши правильна!

Nikita
13.08.2018
08:40:33
спс, потом просто как я понял все ссылаю на новую модель?
не понял вопрос, причём тут модель? миграции нужны для консистентности БД в разных окружениях. Условно у тебя может быть локальный пк/тестовый сервер/прод, и везде у тебя будет одна структура БД

Alex
13.08.2018
09:00:30
Дамп автолоад, проверить неймспейсы
да все нормально с неймспейсами. единственное в чем я сомневаюсь, я иду по русской документации для лары 5.3 а у меня 5.6 и в роутах у меня обращение Route::delete('/task/{task}', 'TaskController@destroy'); и мне кажется в этом месте он автоматом пытается искать App\Http\Controllers\Task

Alex
13.08.2018
09:03:40
со всеми

Андрей
13.08.2018
09:04:38
Route::delete('/task/{task}', 'App\Http\Controllers\TaskController@destroy'); попробуй так

хотя должно и так как у тебя сработать

Aleksandr
13.08.2018
09:10:51
Nikita
13.08.2018
09:11:28
На вп можно в целом сделать всё что угодно ?

Страница 1730 из 2014