x-редактируемые разрывы с исключением при добавлении параметра URL - PullRequest
0 голосов
/ 25 июня 2019

В моем проекте Laravel 5.5 используйте редактируемое поле x-editable для редактирования поля на странице. Пользователь щелкает значение и показывает редактируемое всплывающее окно, фиксируя изменения в базе данных, когда они подтверждают (введите или щелкните значок галочки). Это работало отлично, но затем я изменил свой код маршрута, чтобы добавить параметр в URL страницы, чтобы загрузить одну или другую версию страницы в зависимости от используемого параметра. Это работает для выбора страницы, но сломало все экземпляры x-editable на загруженной странице. Теперь они прерываются с следующей ошибкой (только первая значимая первая часть отображается как дамп ошибки 200 строк)

Edit Amount
212000.00
{
"message": "",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException",
"file": "C:\\xampp\\htdocs\\DS_dev_01\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php",
"line": 255,
"trace": [
{
"file": "C:\\xampp\\htdocs\\DS_dev_01\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php",
"line": 242,
"function": "methodNotAllowed",
"class": "Illuminate\\Routing\\RouteCollection",
"type": "->"
},
...

Код x-editable на моей странице просмотра:

<a href="#" class="assetName" data-type="text" data-name="split_amount" data-url="update-investment-row" data-pk="{{ $investment_split->id }}" data-title="Edit Amount" data-value="{{$investment_split_yours}}">${{number_format($investment_split_yours)}}</a>

Мой (web.php) маршрут, который обрабатывает вызов ajax из этого всплывающего окна:

Route::post('atcv-split-scenario/update-investment-row', 'InvestmentLineSplitController@updateRow')->middleware('auth');

Код контроллера (InvestmentLineSplitController), который обрабатывает вызов update_row:

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\investment_line_split  $investment_line_split
     * @return \Illuminate\Http\Response
     */
    public function updateRow(Request $request, investment_line_split $investment_line_split)
    {

        $pk = $request->input('pk');

        $splitRecord = $investment_line_split::findOrFail($pk);

        // get column name
        $col = $request->input('name');

        // get new value
        $value = $request->input('value');

        $splitRecord->$col = $value;
        $splitRecord->save();

        return \Response::json(array('status' => 1));
    }

URL, который вызывает эту страницу, - http://ds_dev_01.test:8080/atcv-split-scenario/Joe%20vs%20Anne/s, где последний параметр «S» вызывает это. До того, как я добавил последний параметр (S или M определяет, какая из двух версий страницы загружается), x-editable работала нормально, так что каким-то образом последний параметр является проблемой, но я не вижу, где мой код или маршрут неверны и как это повлияет на это. Весь приведенный выше код отлично работает без последнего параметра.

Вот закулисный JavaScript:

$(document).ready(function() {

$.fn.editable.defaults.mode = 'popup';
$.fn.editable.defaults.send = "always";

  $.fn.editable.defaults.params = function (params) 
  {
   params._token = $("#_token").data("token");
   return params;
  };

  $.fn.editable.defaults.success = function(response, newValue) 
            {
                //if(!response.success) return response.msg;
                window.location.reload();
            };

$('.assetName').editable({

           ajaxOptions: {
             dataType: 'json',
             type: 'post'
           }

           });
});

Ошибка намекает на неправильный используемый метод, но я знаю, что он правильный, так как работает на странице без добавленного параметра URL. Мне нужен параметр, чтобы определить, какая страница загружается, но как я могу заставить x-editable работать с этим (и почему нет)?

Есть мысли или предложения?

...