我一般不熟悉 Nette 和 php 框架。我正在尝试创建一个带有选择菜单的表单,该菜单从数据库内的列中获取可选选项列表。<?phpdeclare(strict_types=1);namespace App\Presenters;use Nette\Application\UI;class HomepagePresenter extends UI\Presenter{ /** @var Nette\Database\Context */ private $database; public function __construct(\Nette\Database\Context $database) { $this->database = $database; } protected function createComponentCalculationForm(): UI\Form { $result=$this->database->query('SELECT supp_name FROM suppliers'); foreach($result as $supplier){ $supplierList[]=$supplier; } $form = new UI\Form; $form->addSelect('supplier', 'Dodavatel:',$supplierList); $form->addText('quantity', 'Ks') ->setRequired() ->addRule($form::INTEGER,"Hodnota musí být číslo" ) ->addRule($form::MIN,'Číslo musí být kladné!',0); $form->addText('price', 'Kč') ->setRequired() ->addRule($form::INTEGER,"Hodnota musí být číslo" ) ->addRule($form::MIN,'Číslo musí být kladné!',0); $form->addButton('calculate', 'Spočítat') ->setHtmlAttribute('onclick', 'calculatePrice()'); $form->addTextArea('result'); return $form; }}我希望 $form 选择菜单包含供应商列表
1 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
$supplier变量将包含Nette\Database\Row,您将其存储到$supplierList数组中。Form::addSelect期望数组,其中值是可以字符串化的东西。由于Row不喜欢被字符串化,您需要在列表中添加一些可以做的事情。提取列应该工作:
$result = $this->database->query('SELECT supp_name FROM suppliers');
foreach($result as $supplier){
$supplierList[] = $supplier['supp_name'];
}
- 1 回答
- 0 关注
- 179 浏览
添加回答
举报
0/150
提交
取消