Когда я делал поля как обычно используя Page Builder, я наткнулся на ошибку: Model Alexdzen\Content\Models\Brands’ does not contain a definition for ‘image’.
Спросил в чате, оказалось, что добавления поля картинки не столь очевидно как хотелось бы.
Наше значение не указывается в таблице как поле.
Допустим моя задача сделать галлерею. Таблица состоит из Id и Image. Image — не указываем в таблице. Мы идем в нашу модель, в моем случае это Brands.php и прописываем поле image через attachOne (или attachMany).
<?php namespace Alexdzen\Content\Models;
use Model;
/**
* Model
*/
class Brands extends Model
{
use \October\Rain\Database\Traits\Validation;
/*
* Disable timestamps by default.
* Remove this line if timestamps are defined in the database table.
*/
public $timestamps = false;
/**
* @var string The database table used by the model.
*/
public $table = 'alexdzen_content_brands';
/**
* @var array Validation rules
*/
public $rules = [
'image' => 'required',
];
public $attributeNames = [
'image' => 'Картинка',
];
public $attachOne = [
'image' => 'System\Models\File'
];
}
Соответсвенно в form.yml указываем наше поле из модели.
Ну и чтобы картинка отображался в на странице Контроллера прописываем image. Значение поля я ставлю partial и путь указываю $/alexdzen/content/partials/_image3.htm.
Код паршила
<?php if($value): ?>
<img src="<?php echo $value->path; ?>" style="max-width: 300px; max-height: 150px;">
<?php endif; ?>
И соответсвенно получаю результат.