Php 焦变段塞

Php 焦变段塞,php,pyrocms,Php,Pyrocms,我尝试在pyrocms中创建简单的模块,现在我创建公共表单,在其中输入名称和描述,但slug是skipField,由名称生成。此时,我需要更改“slug生成器”以添加后缀,例如'-'.uniqid() 我的代码视图如下所示: public function save(AdvertFormBuilder $form) { $form->skipField('slug'); $form->setOption('redirect', 'dodaj-ogloszenie/

我尝试在pyrocms中创建简单的模块,现在我创建公共表单,在其中输入名称和描述,但slug是skipField,由名称生成。此时,我需要更改“slug生成器”以添加后缀,例如
'-'.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帐户吗?如果没有,请注册,并告诉我你的用户名。