无法在表单中插入从数据库中检索到的信息

我一般不熟悉 Nette 和 php 框架。我正在尝试创建一个带有选择菜单的表单,该菜单从数据库内的列中获取可选选项列表。


<?php


declare(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 选择菜单包含供应商列表


米脂
浏览 180回答 1
1回答

小唯快跑啊

$supplier变量将包含Nette\Database\Row,您将其存储到$supplierList数组中。Form::addSelect期望数组,其中值是可以字符串化的东西。由于Row不喜欢被字符串化,您需要在列表中添加一些可以做的事情。提取列应该工作:&nbsp; &nbsp; &nbsp; &nbsp; $result = $this->database->query('SELECT supp_name FROM suppliers');&nbsp; &nbsp; &nbsp; &nbsp; foreach($result as $supplier){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $supplierList[] = $supplier['supp_name'];&nbsp; &nbsp; &nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP