Php 焦变段塞
我尝试在pyrocms中创建简单的模块,现在我创建公共表单,在其中输入名称和描述,但slug是skipField,由名称生成。此时,我需要更改“slug生成器”以添加后缀,例如Php 焦变段塞,php,pyrocms,Php,Pyrocms,我尝试在pyrocms中创建简单的模块,现在我创建公共表单,在其中输入名称和描述,但slug是skipField,由名称生成。此时,我需要更改“slug生成器”以添加后缀,例如'-'.uniqid() 我的代码视图如下所示: public function save(AdvertFormBuilder $form) { $form->skipField('slug'); $form->setOption('redirect', 'dodaj-ogloszenie/
'-'.uniqid()
我的代码视图如下所示:
public function save(AdvertFormBuilder $form)
{
$form->skipField('slug');
$form->setOption('redirect', 'dodaj-ogloszenie/potwierdzenie');
$form->setOption('redirect_error', 'dodaj-ogloszenie');
$form->build();
$form->validate();
if($form->hasFormErrors()){
return redirect($form->getOption('redirect_error'));
}else{
$form->saveForm();
return redirect($form->getOption('redirect'));
}
...
现在我需要更改这个slug,比如$\u POST['name'].-'.uniqid()
。我试着这样做:
$form->getFormField('slug')->setValue($form->getFormField('name')->value.'-'.uniqid());
dd($form->getFormField('slug'));exit;
但它不起作用:(
更新1 流文件:
/**
* The stream definition.
*
* @var array
*/
protected $stream = [
'slug' => 'adverts',
'title_column' => 'name',
'translatable' => true,
'trashable' => false,
'searchable' => false,
'sortable' => false,
];
/**
* The stream assignments.
*
* @var array
*/
protected $assignments = [
'name' => [
'translatable' => true,
'required' => true,
],
'slug' => [
'unique' => true,
'required' => true,
],
'category' => [
'required' => true,
],
];
和表单生成文件:
/**
* The form fields.
*
* @var array|string
*/
protected $fields = [
'name' => [
'translatable' => true,
'required' => true,
'unique' => true,
],
'slug' => [
'required' => true,
'unique' => true,
'config' => [
'slugify' => 'name',
],
],
'category' => [
'required' => true,
],
];
模块迁移:
use Anomaly\Streams\Platform\Database\Migration\Migration;
use Defr\AdvertsModule\Category\CategoryModel;
class DefrModuleAdvertsCreateAdvertsFields extends Migration
{
/**
* The addon fields.
*
* @var array
*/
protected $fields = [
'name' => 'anomaly.field_type.text',
'slug' => [
'type' => 'anomaly.field_type.slug',
'config' => [
'slugify' => 'name',
'type' => '-',
],
],
'category' => [
'type' => 'anomaly.field_type.relationship',
'config' => [
'mode' => 'lookup',
'related' => CategoryModel::class,
],
],
];
}
class DefrModuleAdvertsCreateAdvertsStream extends Migration
{
/**
* The stream definition.
*
* @var array
*/
protected $stream = [
'slug' => 'adverts',
'title_column' => 'name',
'searchable' => true,
'trashable' => true,
];
/**
* The stream assignments.
*
* @var array
*/
protected $assignments = [
'name' => [
'required' => true,
],
'slug' => [
'required' => true,
'unique' => true,
],
'category',
];
}
class DefrModuleAdvertsCreateCategoriesStream extends Migration
{
/**
* The stream definition.
*
* @var array
*/
protected $stream = [
'slug' => 'categories',
'title_column' => 'name',
];
/**
* The stream assignments.
*
* @var array
*/
protected $assignments = [
'name' => [
'required' => true,
],
'slug' => [
'required' => true,
'unique' => true,
],
];
}
广告流迁移:
use Anomaly\Streams\Platform\Database\Migration\Migration;
use Defr\AdvertsModule\Category\CategoryModel;
class DefrModuleAdvertsCreateAdvertsFields extends Migration
{
/**
* The addon fields.
*
* @var array
*/
protected $fields = [
'name' => 'anomaly.field_type.text',
'slug' => [
'type' => 'anomaly.field_type.slug',
'config' => [
'slugify' => 'name',
'type' => '-',
],
],
'category' => [
'type' => 'anomaly.field_type.relationship',
'config' => [
'mode' => 'lookup',
'related' => CategoryModel::class,
],
],
];
}
class DefrModuleAdvertsCreateAdvertsStream extends Migration
{
/**
* The stream definition.
*
* @var array
*/
protected $stream = [
'slug' => 'adverts',
'title_column' => 'name',
'searchable' => true,
'trashable' => true,
];
/**
* The stream assignments.
*
* @var array
*/
protected $assignments = [
'name' => [
'required' => true,
],
'slug' => [
'required' => true,
'unique' => true,
],
'category',
];
}
class DefrModuleAdvertsCreateCategoriesStream extends Migration
{
/**
* The stream definition.
*
* @var array
*/
protected $stream = [
'slug' => 'categories',
'title_column' => 'name',
];
/**
* The stream assignments.
*
* @var array
*/
protected $assignments = [
'name' => [
'required' => true,
],
'slug' => [
'required' => true,
'unique' => true,
],
];
}
和类别流迁移:
use Anomaly\Streams\Platform\Database\Migration\Migration;
use Defr\AdvertsModule\Category\CategoryModel;
class DefrModuleAdvertsCreateAdvertsFields extends Migration
{
/**
* The addon fields.
*
* @var array
*/
protected $fields = [
'name' => 'anomaly.field_type.text',
'slug' => [
'type' => 'anomaly.field_type.slug',
'config' => [
'slugify' => 'name',
'type' => '-',
],
],
'category' => [
'type' => 'anomaly.field_type.relationship',
'config' => [
'mode' => 'lookup',
'related' => CategoryModel::class,
],
],
];
}
class DefrModuleAdvertsCreateAdvertsStream extends Migration
{
/**
* The stream definition.
*
* @var array
*/
protected $stream = [
'slug' => 'adverts',
'title_column' => 'name',
'searchable' => true,
'trashable' => true,
];
/**
* The stream assignments.
*
* @var array
*/
protected $assignments = [
'name' => [
'required' => true,
],
'slug' => [
'required' => true,
'unique' => true,
],
'category',
];
}
class DefrModuleAdvertsCreateCategoriesStream extends Migration
{
/**
* The stream definition.
*
* @var array
*/
protected $stream = [
'slug' => 'categories',
'title_column' => 'name',
];
/**
* The stream assignments.
*
* @var array
*/
protected $assignments = [
'name' => [
'required' => true,
],
'slug' => [
'required' => true,
'unique' => true,
],
];
}
当您键入名称时,应该会自动键入slug。请显示广告流的迁移。还有,这是您的代码,是来自控制器吗?我是说
保存公共方法。第二个小部分来自哪里?老实说,您真是太棒了!)您想说您拥有表单生成器而不渲染它吗?请显示formbuilder的渲染位置。此外,几乎所有pyro类的实例都支持方法链接。是的,我不使用表单呈现,因为之前我使用的是cakephp,并且在这个框架上表单生成器不好;)此时,我使用了一个普通的$this->view和简单的html表单以及{{form.fields.name.input_name}}。save函数是controller中的函数,我更新了这个问题以从stream添加代码;)迁移是错误的!你有gitlab帐户吗?如果没有,请注册,并告诉我你的用户名。