Я пытаюсь сделать модель привязки в edit.blade.php однако, имя поля в базе данных host_firstname
отличается от имени поля формы host-firstname
Итак, данные из базы данных не отображаются в поле при запуске. (и я не хочу менять имя поля данных в моем представлении тоже)
Я очень новичок в Laravel, и я не уверен, как установить имя ключа по умолчанию в модели, чтобы он работал. У кого-нибудь есть какие-то решения для этого?
Схемы базы данных
family_general_id int(10) unsigned NOT NULL AUTO_INCREMENT,
host_firstname varchar(255) COLLATE utf8_unicode_ci NOT NULL,
host_lastname varchar(255) COLLATE utf8_unicode_ci NOT NULL,
edit.blade.php
{!! Form::model($survey, ['method' => 'PATCH', 'url' => 'surveys/' . $survey->family_general_id]) !!}
<!-- Host-firstname Form Input-->
<div class="form-group">
{!! Form::label('host-firstname', 'Firstname:') !!}
{!! Form::text('host-firstname', null, ['class' => 'form-control']) !!}
</div>
<!-- Host-lastname Form Input-->
<div class="form-group">
{!! Form::label('host-lastname', 'Lastname:') !!}
{!! Form::text('host-lastname', null, ['class' => 'form-control']) !!}
</div>
{!! Form::close() !!}
Я не уверен, возможно ли это в данный момент.
Я посмотрел на Illuminate / Html / FormBuilder, как вы можете видеть transformKey()
работает только с under_scores
/**
* Get the model value that should be assigned to the field.
*
* @param string $name
* @return string
*/
protected function getModelValueAttribute($name)
{
if (is_object($this->model))
{
return object_get($this->model, $this->transformKey($name));
}
elseif (is_array($this->model))
{
return array_get($this->model, $this->transformKey($name));
}
}
protected function transformKey($key)
{
return str_replace(array('.', '[]', '[', ']'), array('_', '', '.', ''), $key);
}
Решение, которое я могу предложить вместо этого использовать базовый конструктор форм laravel, поскольку это особый случай:
{!! Form::open(['method' => 'PATCH', 'url' => 'surveys/' . $survey->family_general_id]) !!}
<!-- Host-firstname Form Input-->
<div class="form-group">
{!! Form::label('host-firstname', 'Firstname:') !!}
{!! Form::text('host-firstname', null, ['class' => 'form-control']) !!}
</div>
<!-- Host-lastname Form Input-->
<div class="form-group">
{!! Form::label('host-lastname', 'Lastname:') !!}
{!! Form::text('host-lastname', null, ['class' => 'form-control']) !!}
</div>
{!! Form::close() !!}
Затем сделайте что-то вроде:
class SurveyController extends Controller
{
//after validation
$host_firstname = Input::get('host-firstname');
//send this to your database $host_firstname
$survey = new Survey;
$survey->host_firstname = $host_firstname;
$survey->save();
}
Других решений пока нет …