php - Pyrocms 更换弹头
问题描述
我尝试在 pyrocms 中创建简单的模块,现在我创建了输入名称和描述的公共表单,但是 slug 是 skipField 并且是从名称生成的。此时我需要更改“slug generator”以添加后缀,例如'-'.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'));
}
...
现在我需要像$_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,
],
];
}
当您键入名称时,应自动键入 slug。
推荐阅读
- bash - 从 Windows 10 批处理文件在 Linux 服务器上运行 bash 命令
- angular - Angular - 仅在条件为真时调用 Async Validator
- r - 为什么我在 glmer 中收到“错误数据”错误?
- azure-devops - 根据历史项目日期查询 ADO (VSTS) 工作项目
- amazon-web-services - 如何确认一组消息的处理
- python - Geopandas:带有 3D 向量的缓冲区
- c# - 使用外键发布新实体会导致创建另一个外部实体而不是引用现有实体
- ios - 隐藏主页指示器 (iOS) TypeScript React-Native
- java - 在 google-cloud-java 测试中模拟 Google Cloud 平台
- python - 在这个刽子手游戏中输入无效角色时,如何使用户不会失去生命?