JPHP表单开发问题:点击按钮后标签仅显示Object而非输入字符串
解决JPHP中追加输入框内容到标签显示“Object”的问题
问题根源很明确:你直接把输入框控件对象赋值给了变量,而非获取它的文本内容:
- 代码里
$GLOBALS['tableName'] = $this->edit;这行,是把整个输入框控件存进了变量,不是用户输入的字符串 - 当
Element::appendText()接收控件对象时,会默认把对象转成字符串,JPHP里控件对象的默认字符串表示就是“Object”,所以标签才会显示这个内容
修改方案很简单,只要获取输入框的文本值就行:
- 调用输入框控件的
getValue()方法(JPHP的UX输入控件通用获取值的方法)来拿到用户输入的内容 - 可以去掉不必要的全局变量,直接把值传给
appendText,让代码更简洁
修改后的完整代码:
class SetTableName extends AbstractForm{ /** * @event button.click */ function doButtonClick(UXMouseEvent $e = null){ // Generated $e = $event ?: $e; // legacy code from 16 rc-2 // 获取输入框的文本内容 $inputContent = $this->edit->getValue(); Element::appendText($this->form('MM')->label, $inputContent); app()->hideForm('SetTableName'); } }
如果你的输入框控件类型特殊,getValue()不生效,可以查看对应控件的文档,尝试用getText()方法获取内容,不过大部分JPHP UX输入控件都是用getValue()来获取用户输入的文本。
内容的提问来源于stack exchange,提问作者R R
相关产品推荐
相关产品推荐

