扩展Kohana的核心课程3.1

时间:2011-04-13 14:52:52

标签: php kohana

我在application / classes / form.php中编写了form.php文件

 <?php defined('SYSPATH') or die('No direct script access.');

class Form extends Kohana_Form {

  public static function input($name, $value = NULL, array $attributes = NULL) {
    // Set the input name
    $attributes['name'] = $name;
    // Set the input value
    $attributes['value'] = $value;
    if (!isset($attributes['id'])) {
      $attributes['id']= $value;
    }
    if (!isset($attributes['type'])) {
      // Default type is text
      $attributes['type'] = 'text';
    }    
    return '<input' . HTML::attributes($attributes) . ' />';
  }

}

?>

当我使用form :: input时,这个函数正在调用,但它没有在元素上应用id属性。 我的代码有什么问题?

用法示例

echo  form::input('date', $cd->year );

o / p

<input type="text" name="date">

2 个答案:

答案 0 :(得分:2)

尝试了您的代码,它按预期工作。仔细检查$value参数(在您的情况下为$cd->year)是否不是NULL

HTML::attributes()将跳过具有NULL值的属性;您的自定义输入方法会添加一个等于value的id,因此如果value为NULL,则id也将为,并且不会将其呈现为属性。

答案 1 :(得分:1)

试试这个;

class Form extends Kohana_Form {

    public static function input($name, $value = NULL, array $attributes = NULL)
    {
        if ( empty($attributes['id']))
        {
            $attributes['id']= $name; // not value
        }

        return parent::input($name, $value, $attributes);
    }

}