Неопределенный индекс контроллера Laravel с функцией «магазин»

-1

Коллеги,

В настоящее время я разрабатываю часовую регистрационную систему для компании, в которой я стажер. Проблема, которую я сейчас имею в виду, заключается в том, что когда я добавляю новую строку в форму таблицы, в которой коллеги могут добавлять свои задачи и часы с помощью ajax. Я получаю неопределенную индексную ошибку, даже несмотря на то, что переменная установлена (или, как мне хотелось бы верить).

Вот мой код Ajax/javascript, чтобы добавить новую строку и использовать функцию ajax

Ajax: addRows++;

  $(".btn-save").click(function(){

    rowId = $(this).attr('rel');

    var url = '/hoursregistrations/create';
    var data = {
        user_id: {{  $user_id->id }},
        project_id: $("tr#addRow-"+rowId + " .project_id").val(),
        note: $("tr#addRow-"+rowId + "  .note").val(),
        hours: $("tr#addRow-"+rowId + " .hours").val(),
        date: $("tr#addRow-"+rowId +  " .date").val(),
    };

    $.ajax({
        headers:{ 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        type: 'post',
        url: url,
        dataType: 'json',
        data: data,
        success: function(data) {
            console.log(data);
            $("table tbody").append(markup);
        //redirect
        if(type=="exit")
            window.location = "create.blade.php";
    }
});
});

});

});

Append:

     $(document).ready(function() {
addRows = 0;
$("#addField").click(function (){
  var user_id = $('#user_id').val();
  var project_id = $('#project_id').val();
  var note = $('#note').val();
  var date = $('#date').val();
  var hours = $('#hours').val();
  var markup = "<tr id='addRow-"+(addRows)+"'><td hidden>{{  $user_id->first_name }}</td></td>"
  + user_id + 
  " <td> <select class='project_id' value=''><option>{!! \App\Project::getCompanyName($hoursregistration->project_id) !!} - {!! \App\Subproject::getTaskTitle($hoursregistration->subproject_id)!!}</option></td>"
  + project_id +
  "<td><input type='text' value='{{ $hoursregistration->note }}' name='note' class='note'></td></td>"
  + note +   
  "<td><input type='date' class='date' value='{!! \App\Helpers::dateFormat($hoursregistration->date) !!}'></td>"
  + date +
  "<td><input type='hours' class='hours' value='{{ $hoursregistration->hours }}'></td></td>"
  + hours +
  "<td><button id='btn-save' name='btn-save' class='btn btn-default btn-xd btn-save save-hoursregistration' value='' rel='addRow-"+addRows+"'>Save</button>"
  $("table tbody").append(markup);

Идентификация и т.д. Хорошо, я просто не могу опубликовать код здесь ха-ха..

Store function in the Controller

public function store(Request $request)
{
    //$hoursregistration= new Hoursregistration($request->except(''));


    $input = Input::all();

    $hoursregistration = new Hoursregistration();
    $hoursregistration->user_id = Sentinel::getUser()->id;
    $hoursregistration->project_id = $input['project_id'];
    $hoursregistration->subproject_id = $input['subproject_id'];
    $hoursregistration->date = $input['date'];
    $hoursregistration->note = $input['note'];
    $hoursregistration->hours = $input['hours'];
           //   dd($hoursregistration); 
    $hoursregistration->save();
    return redirect('hoursregistrations')->with('success', Lang::get('message.success.create'));
}

Кто-нибудь знает, как избавиться от моей ошибки "project_id" в Undefined Index?

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Маршруты приложения:

            Route::group(array('prefix' => 'hoursregistrations'), function () {
            Route::get('/', array('as' => 'hoursregistrations.index', 'uses' => 'HoursregistrationsController@index', function(){
                $projects = Project::all();
                return View::make('index')->with('hoursregistrations', $hoursregistrations);
            }));



            Route::get('data', ['as' => 'hoursregistrations.data', 'uses' => 'HoursregistrationsController@data']);

            Route::get('/create', array('as' => 'hoursregistrations.create', 'uses' => 'HoursregistrationsController@create'));
            Route::post('/create', 'HoursregistrationsController@store');
            Route::get('/show/{id}', array('as' => 'hoursregistrations.show', 'uses' => 'HoursregistrationsController@show'));
            Route::get('/edit/{id}', array('as' => 'hoursregistrations.edit', 'uses' => 'HoursregistrationsController@edit'));

            Route::post('/edit/{id}/update', array('as' => 'hoursregistrations.update', 'uses' => 'HoursregistrationsController@update'));
            Route::get('/{id}/delete', array('as' => 'hoursregistrations.delete', 'uses' => 'HoursregistrationsController@getDelete'));
            Route::get('/{id}/confirm-delete', array('as' => 'hoursregistrations.confirm-delete', 'uses' => 'HoursregistrationsController@getModalDelete'));
        });

HTML:

<div class="panel-body table-responsive">
            <!-- Tabel om de data te weergeven -->
            <table class="table table-bordered" id="myTable">
                <thead>
                    <tr class="filters"> 
                       <th>Titel Project</th>
                       <th>Notitie</th>
                       <th>Datum</th>
                       <th>Uren</th>
                       <th>Actions</th>
                   </tr>
               </thead>
               <tbody id="content">
                @foreach ($hoursregistrations as $hoursregistration)
                <tr>
                   <td hidden>{{  $user_id->first_name }}</td>
                   <td >{!! App\Project::getCompanyName($hoursregistration->project_id) !!} - {!! \App\Subproject::getTaskTitle($hoursregistration->subproject_id)!!}</td>      
                   <td>{!! $hoursregistration->note !!}</td>    
                   <td>{!! \App\Helpers::dateFormat($hoursregistration->date) !!}</td>
                   <td>{!! $hoursregistration->hours !!}</td>
                   <td>
                    <button id="btn-edit" name="btn-edit" class="btn btn-warning btn-xs btn-detail open-modal" value="{{$hoursregistration->id}}">Edit</button>
                    <button id="btn-delete" name="btn-delete" class="btn btn-danger btn-xs btn-delete delete-hoursregistration" value="{{ $hoursregistration->id }}">Delete</button>
                    <button id="btn-save" name="btn-save" class="btn btn-default btn-xd btn-save save-hoursregistration" value="">Save</button>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>
    <!-- End: tabel die data weergeeft -->
</div>
  • 0
    Пожалуйста, вы можете опубликовать свои маршруты?
  • 0
    Это может быть глупый комментарий здесь, но я ничего не сделал на своих маршрутах ... Вау. Сможете ли вы помочь мне создать маршрут, который передает значения?
Показать ещё 16 комментариев
Теги:
laravel-5

1 ответ

1
Лучший ответ

Ключи в вашем объекте данных, который вы отправляете с помощью AJAX, должны иметь котировки, если вы хотите называть их так же, как и вы.

var data = {
    'user_id': {{  $user_id->id }},
    'project_id': $("tr#addRow-"+rowId + " .project_id").val(),
    'note': $("tr#addRow-"+rowId + "  .note").val(),
    'hours': $("tr#addRow-"+rowId + " .hours").val(),
    'date': $("tr#addRow-"+rowId +  " .date").val(),
};

Кроме того, вы должны преобразовать свои данные в строку JSON в качестве части запроса, используя JSON.stringify

$.ajax({
    headers:{ 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
    type: 'post',
    url: url,
    dataType: 'json',
    data: JSON.stringify(data),
    success: function(data) {
        console.log(data);
        $("table tbody").append(markup);
    //redirect
    if(type=="exit")
        window.location = "create.blade.php";
}
  • 0
    Поскольку это не работает, я сделал это немного с помощью @alexSlipKnot. Проблема оказалась в ("tr # addRow -" + rowId + ".project_id"). Val (). Который отказался принимать ценности
  • 0
    Я рад, что вы решили это
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню