Codeigniter 3 应用程序错误:向 Ion-Auth 表单元素添加属性失败

Codeigniter 3 application bug: adding atributes to Ion-Auth form elements fails

我正在 Codeigniter 3 中开发一个需要身份验证的应用程序。我决定使用 Ion-Auth 库,而不是自己进行身份验证。

因为我也用Bootstrap4,所以我尝试在表单控件中加入表单相关的类。我试图替换:

<p>
  <label for="new_password"><?php echo sprintf(lang('change_password_new_password_label'), $min_password_length);?></label> <br />
    <?php echo form_input($new_password);?>
</p>

与:

<div class="form-group">
    <?php $attributes = array(
      'class'       => 'form-control',
      'placeholder' => 'New password',
      'value'       => $new_password
    ); ?>
    <label for="new_password"><?php echo sprintf(lang('change_password_new_password_label'), $min_password_length);?></label> <br />
    <?php echo form_input($attributes);?>
  </div>

上面的代码抛出错误消息 Array to string conversion

我做错了什么?

<div class="form-group">
    <?php $attributes = [
      'class'       => 'form-control',
      'placeholder' => 'New password',
      'value'       => $new_password
    ]; ?>
    <label for="new_password"><?php echo sprintf(lang('change_password_new_password_label'), $min_password_length);?></label> <br />
    <?php echo form_input($attributes);?>
  </div>

试试这个

您没有指定调用的函数,但在查看 Ion-Auth library 后,我猜它是 reset_password()。不管怎样,

在您的 controller 中,数据传递为 -

$this->data['new_password'] = [
                                'name' => 'new',
                                'id' => 'new',
                                'type' => 'password',
                                'pattern' => '^.{' . $this->data['min_password_length'] . '}.*$',
                              ];

现在$new_passwordview中的一个数组。所以,为了赋予它价值并传递额外的属性,你必须写 -

<?php 
    $new_password['class'] = 'form-control';
    $new_password['placeholder'] = 'New password'; 
    $new_password['value'] = $_POST['new'] ?? ''; // if post request then submitted value else empty

    echo form_input($new_password);
?>

这将产生 -

<input type="password" name="new" value="123456" id="new" pattern="^.{4}.*$" class="form-control" placeholder="New password">

编辑

对于form_submit,你可以写-

echo form_submit('submit', 'submit', 'class="btn btn-block btn-md btn-success"');

或作为数组 -

echo form_submit(array(
                         'name'=>'submit',
                         'value' => 'submit', 
                         'class' => 'btn btn-block btn-md btn-success'
                      )
                 );

这将产生 -

<input type="submit" name="submit" value="submit" class="btn btn-block btn-md btn-success">

看看这是否对您有帮助。

这是有效的登录表单,供需要示例的人使用:

<?php echo form_open("auth/login");?>

    <div class="form-group">
      <?php $identity['class'] = 'form-control';
            echo lang('login_identity_label', 'identity');
            echo form_input($identity);?>
    </div>

    <div class="form-group">
      <?php $password['class'] = 'form-control';
            echo lang('login_password_label', 'password');
            echo form_input($password);?>
    </div>

    <div class="form-group">
      <?php $remember['class'] = 'form-control';
            echo lang('login_remember_label', 'remember');
            echo form_checkbox('remember', '1', FALSE, 'id="remember" class="ml-2"');?>
    </div>

    <div class="form-group">
      <?php echo form_submit('submit', lang('login_submit_btn'), 'class="btn btn-block btn-md btn-primary"');?>        
    </div>

<?php echo form_close();?>