首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Yii中使用有效的随机名字段?

如何在Yii中使用有效的随机名字段?
EN

Stack Overflow用户
提问于 2020-02-23 21:45:41
回答 1查看 64关注 0票数 0

我有很多从循环中生成的字段。我想通过验证规则(整数)来验证它们。我不知道如何将这么多具有随机名称的字段放入rules ()函数的模型中。如何在没有模型的情况下验证字段?

查看:<?= Html::input('number', 'file[' . $indexRow . ']' . '[' . $indexCell . ']', $cell, $options = ['class' => 'form-control', 'filter' => 'intval', 'integer']) ?>

控制器:

`公共函数actionEdit($fileName) {

代码语言:javascript
复制
    $siteHelper = new SiteHelper();
    $editForm = new EditForm();

    $preparedRows = $siteHelper->prepareRows($fileName);
    $preparedHTML = '';

    if (Yii::$app->request->isPost) {

        $post = Yii::$app->request->post();

        if (isset($post['file'])) {

            $dataFile = $post['file'];
            $preparedRows = $siteHelper->updateExcelFile($fileName, $dataFile);

            Yii::$app->session->setFlash('success', 'Plik został zaktualizowany!');

        } else if (isset($post['EditForm'])) {
            $events = $post['EditForm']['events'];
            $preparedHTML = $siteHelper->prepareHTML($events, $preparedRows, $fileName);

            Yii::$app->session->setFlash('success', 'Wygenerowano plik PDF!');
        }
    }

    $viewParameters = [
        'rows' => $preparedRows,
        'editForm' => $editForm,
        'scoreHTML' => $preparedHTML,
        'downloadLink' => Url::toRoute(['site/download', 'fileName' => $fileName])
    ];

    return $this->render('edit', $viewParameters);
}`

模型:`类EditForm扩展模型{公有$events;

代码语言:javascript
复制
public function rules()
{


    return [
        [['events'], 'required'],
        ['events', 'integer'],
    ];
}

}`

EN

回答 1

Stack Overflow用户

发布于 2020-02-24 23:02:52

当您拥有一个数组时,您可以使用每个验证器:https://www.yiiframework.com/doc/api/2.0/yii-validators-eachvalidator

验证函数应为:

代码语言:javascript
复制
public function rules()
{
    return [
         [['events'], 'each', 'rule' => ['required']],
         [['events'], 'each', 'rule' => ['integer']],
    ];
}

您可能需要避免在html中使用多维数组,并按如下方式呈现字段:

代码语言:javascript
复制
<?= Html::input('number', 'file[' . $indexRow . '-' . $indexCell . ']', $cell, $options = ['class' => 'form-control', 'filter' => 'intval', 'integer']) ?>

稍后您可以“分解”行单元格索引(它不是应该是列的吗?)来标识行和列。

代码语言:javascript
复制
$rowCellIndecies = explode('-', $rowCellIndex);

分解函数:https://www.php.net/manual/en/function.explode.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60362820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档