У меня есть проект веб-приложения, над которым я работал, большая часть функциональности приложений работает, за исключением отправки флага на ресурсе. Я хочу использовать модальную форму для отправки данных в базу данных, а затем на странице с изображением с пометкой отображаются все помеченные ресурсы Name & Description
(из таблицы ресурсов) Flag_Reason & Other_Comments
(из таблицы с флагом) Я работал над тем, где она подавала только Flag_Reason and Other_Comments
и не обновлять мою таблицу ресурсов вообще. Я считаю, что в настоящее время у меня проблемы с путями, потому что после того, как меняю функцию, чтобы обновить таблицу ресурсов и создать новую запись флага в БД я получаю сообщение об ошибке, как этогоПроблемы с маршрутизацией Laravel для модальной формы
Missing argument 1 for App\Http\Controllers\FlagsController::addFlag()
Вот некоторые из моего кода , надеюсь, кто-то может помочь мне окончательно разобраться в этом раз и навсегда.
Маршруты
Route::get('resource', array('as'=>'viewResource', 'uses' => '[email protected]'));
Route::get('flags', '[email protected]');
Route::post('resource', ['as' => 'resource', 'uses'=>'[email protected]']);
///Route::post('resource', ['as' => 'resource', 'uses'=>'[email protected]']);///
This route works fine, and only inserts the Flagged table data into the database.
Если я изменить свой маршрут, чтобы посмотреть, как этот Route::post('resource/{Resource_ID}', ['as' => 'resource', 'uses'=>'[email protected]'])
Я получаю сообщение об ошибке, как этот Missing required parameters for [Route: resource] [URI: resource/{Resource_ID}].
Флаги контроллера
class FlagsController extends Controller
{
public function index()
{
$resources = Resources::where('Flagged', 1)->with('flags')->get();
return view('pages.flags', ['resource' => $resources]);
}
public function addFlag($id)
{
$flag = Flagged::create(Request::all());
$resource = Resources::findOrFail($id);
$resource->update(array('Flagged' => 1));
$resource->flags()->attach([$flag->id]);
dd($resource::all());
return back();
}
//////// This function inserts only the Flagged table data into the Flagged table, It doesnt do what I want it to do, so i've commented it out/////
public function postFlag()
{
$flag = Flagged::create([
'Flag_Reason' => Input::get('reason'),
'Other_Comments' =>Input::get('comments')]);
$flag->save();
\Session::flash('flash_message', 'Flagged!');
return redirect('resource');
}
}
Resource View
...
@foreach($resources as $resource) @foreach ($resource->locations as $location)
<tr>
<td> <a class="btn btn-small btn-default" style="float:right; margin-right:5px;" href="{{ URL::to('resource/addToCart/' .$resource->Resource_ID) }}">+</a> {{ $resource->Name }}</td>
<td>{{ $resource->Description }}</td>
<td>{{ $location->Address }}</td>
<td>{{ $location->City }}</td>
<td>{{ $location->Zip_Code }}</td>
<td>{{ $location->County }}</td>
<td>
<button type="button" class=" msgBtn btn btn-default" style=" display:inline; margin-right:auto;"><a href="pages/editresources/{{$resource['Resource_ID']}}">Edit</a>
</button>
<button type="button" id="submitFlag" class=" msgBtn btn btn-default" style=" display:inline; margin-right:auto;"><a href="#flagResource" data-toggle="modal" data-resource-id="{{ $resource->Resource_ID }}" data-resource-name="{{ $resource->Name }}">Flag</a>
</button>
<button type="button" class=" msgBtn3 btn btn-default pull-right" style="display:inline; margin-right:auto;"><a href="pages/deleteResource/{{$resource['Resource_ID']}}">Delete</a>
</button>
</td>
</tr>
@endforeach
@endforeach
Modal, внутри Ресо urces Посмотреть
<div class="modal fade" id="flagResource" tabindex="-1" role="dialog" aria-labelledby="flagModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
<h4 class="modal-title"
id="flagResourceLabel" style="text-align:center;"> Flagged
</h4>
</div>
<div class="modal-body">
{!! Form::open(array('route'=>'resource', 'class'=>'form', 'method'=>'POST')) !!}
<div class="form-group">
<label for="reason" class="control-label">Reason for Flagging:</label>
{!! Form::text('reason', null, array('class'=> 'form-control', 'placeholder'=>'Reason')) !!}
</div>
<div class="form-group">
<label for="comments" class="control-label">Other Comments:</label>
{!! Form::text('comments', null, array('class'=> 'form-control', 'placeholder'=>'Comments')) !!}
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<span class="pull-right">
<button id="submitFlag" type="submit" class="btn btn-primary" style="margin-left:5px;">Flag</button>
</span>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
<script>
$('#flagResource').on('show.bs.modal', function(e) {
//var submitFlag = $(e.relatedTarget);
var resourceName = $(e.relatedTarget).data('resource-name');
var resourceId = $(e.relatedTarget).data('resource-id');
var modal = $(this);
modal.find('.modal-title').text(resourceName);
});
</script>
Проблема я думаю, что происходит, моя форма открыта в мой модальное {!! Form::open(array('route'=>'resource', 'class'=>'form', 'method'=>'POST')) !!}
, и моя addFlag
функция принимает идентификатор, но мой маршрут ресурс не нужен { id} на нем.
Если кто-то может взглянуть на мои маршруты и помочь мне отладить его, было бы здорово. Заранее спасибо.
Благодарим вас за ответ. В вашем методе формы '$ yourId', какой ID я должен использовать там? Я пробовал '$ id', я получаю' undefined variable id', я пробовал '$ resource' и получал ошибку' Array to string conversion'. –
Я просто обновил ответ, возможно, лучше сделать другой путь, так как мы имеем дело с несколькими ресурсами. – user3158900