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_password
是view
中的一个数组。所以,为了赋予它价值并传递额外的属性,你必须写 -
<?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();?>
我正在 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_password
是view
中的一个数组。所以,为了赋予它价值并传递额外的属性,你必须写 -
<?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();?>