Как добавить переменную (id) для отправки при загрузке изображения в CKeditor 4 - PullRequest
0 голосов
/ 19 апреля 2020

Я использую laravel 7. Я получил код при загрузке изображения без плагина, но моя проблема сейчас заключается в добавлении id (переменной), переданной вместе с 3 переменными по умолчанию из CKeditor 4.

CKEditor=editor1&CKEditorFuncNum=1&langCode=en

Это переменные, передаваемые в «Строковых параметрах запроса»:

_token: PcQGTkcFguEY4dJeguWsaNo (sample token)
CKEditor: pDescription
CKEditorFuncNum: 1
langCode: en 

Я хочу, чтобы URL стал таким с переменной «id»

Пример:

CKEditor=editor1&CKEditorFuncNum=1&langCode=en&id=1

Это переменные, которые я хочу передать в «Строковых параметрах запроса»: с переменной «id»

_token: PcQGTkcFguEY4dJeguWsaNo (sample token)
CKEditor: pDescription
CKEditorFuncNum: 1
langCode: en
id:1

Идентификатор ( переменная) - это идентификатор продукта, с которым я хочу связать фотографию. (внешний ключ)

Кто-нибудь может сказать мне, как достичь этого или любую идею, с чего мне начать? Я искал ответ на этот вопрос со вчерашнего дня.

Вот мой код:

Контроллер:

 public function upload(Request $request)
{ 


    if($request->hasFile('upload')) {
        $originName = $request->file('upload')->getClientOriginalName();
        $fileName = pathinfo($originName, PATHINFO_FILENAME);
        $extension = $request->file('upload')->getClientOriginalExtension();
        $fileName = $fileName.'_'.time().'.'.$extension;

        $request->file('upload')->move(public_path('uploaded_productpictures'), $fileName);

        $CKEditorFuncNum = $request->input('CKEditorFuncNum');
        $url = asset('uploaded_productpictures/'.$fileName); 
        $msg = 'Image uploaded successfully'; 
        $response = "<script>window.parent.CKEDITOR.tools.callFunction($CKEditorFuncNum, '$url', '$msg')</script>";

        @header('Content-type: text/html; charset=utf-8'); 
        echo $response;

        // return response()->json([ 'fileName' => $filename, 'uploaded' => true, 'url' => $url, ]);

    }

Вот код в javascript

<script src="{{ asset('ckeditor/ckeditor.js') }}"></script>
<script>  
    CKEDITOR.replace('pDescription', {
        fileTools_requestHeaders: {
            'X-CSRFToken': '{{ csrf_token() }}',
        },
        filebrowserUploadUrl: "{{route('save-ckeditorproductphoto', ['_token' => csrf_token() ])}}",    
        filebrowserUploadMethod: 'form'
    });  
</script>

И это мой маршрут: я пробовал этот, но идентификатор не проходит

Route::post('/products/save-ckeditorproductphoto', 'ProductphotosController@upload')->name('save-ckeditorproductphoto');

Я не знаю о ckfinder, но все, что я знаю, это когда я использую загрузить имя как функцию для получения запроса $ от fileBrowserUrl.

1 Ответ

0 голосов
/ 20 апреля 2020

если вам просто нужно id, почему бы не передать его в route

filebrowserUploadUrl: "{{route('save-ckeditorproductphoto', [$some_id,'_token' => csrf_token())}}"

документах , указанный помощник по маршруту может принимать любой параметр в массиве

Route::post('/products/save-ckeditorproductphoto/{product}', 'ProductphotosController@upload')->name('save-ckeditorproductphoto');

и измените свой контроллер загрузки как

public function upload(Request $request, Product $product){ ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...