2015-04-02 55 views
0

我一直在做一个MVC网站,我无法从我的表单发送行ID到我的控制器。PHP MVC不向控制器发送价值

我用于表单的代码获取每个数据库条目的行ID并将其分配给隐藏值。当表单被提交时,它将参数发送给控制器(应该发送$ uid),但是uid没有将其发送给控制器。

表单代码(buttons.php)

<?php 
    $itemsDAO = new ItemsDAO(); 
    $result = $itemsDAO->getItems(); 
    foreach ($result as $row) { 
     $uid = $row['id']; 
?> 
    <form action="index.php" method="post"> 
    <fieldset> 
    <input id='action' type='hidden' name='action' value='deleteItem' /> 
    <p> 
    <div class="form-group"> 
     <div class="controls"> 
      <input type="hidden" id="fId" name="fId" value="<?php echo $uid; ?>"> 
      <input type="submit" class="btn btn-success" value="Delete"> 
     </div> 
    </div> 
    </p> 
    </fieldset> 
    </form> 
<?php } ?> 

控制器功能

function deleteItem($parameters) { 
    $id=$parameters["fId"]; 

    if ($this->model->deleteItem($id)) { 
     $this->model->hasDeleteFailed = false; 
     $this->model->setDeleteItemConfirmation(); 
     return (true); 
    } 
    else 
     $this->model->deleteItemError (DELETE_ITEM_ERROR_STR); 
} 

View.php - 我在哪里展示DB项目和按钮的列表。 php

$this->model->prepareItemList(); 
$buttons = file_get_contents("templates/buttons.php"); 
$HTMLItemList = ""; 
foreach ($this->model->itemList as $row) 
     $HTMLItemList .= "<li><strong>" . $row ["title"] . ": </strong>" . $row ["price"] . "<blockquote>" .$row ["description"] . " " . $buttons ."</blockquote></li>"; 

回答

0

好的,

  1. 步步$ uid具有到第一使其进入窗体元素值的属性。检查html源代码以确保实际发生。

  2. place var_dump($ _ POST)exit;在你的控制器中找到实际上正在收到的东西,如果有的话。

  3. 检查以确保结果数组元素实际有一个值而不是空字符串值或NULL。

嗯S.O.代码格式不好。

// turn on error reporting for dev to view empty or missing variable errors 
    ini_set('error_reporting', E_ALL); 
    $result=$itemsDAO->getItems(); 
    foreach ($result as $row) { 
     ($row['id'] != ''? $uid = $row['id'] : $uid ='no id found'); 
     // debug result 
     echo '<pre>' . print_r($row,1) .'</pre>'; 
    } 
+0

我已经想通了,这是给我的问题表单代码,我测试的一些值硬编码和工作完美的代码,但我不能明白为什么被赋予$ UID值的心不是到值 – Hayes121 2015-04-02 19:18:19

+0

是的,我之前会提到这一点,但选择先检查表单值。在许多框架中, – 2015-04-02 20:54:51

+0

查看$ uid是否被当作字符串处理。 – Elin 2015-04-02 21:08:42

0

尝试$ _POST [“fld”];在你的控制器中获得价值。如果你正在使用像codeigniter这样的框架,那么你可以使用它自己的方法。

例如codeigniter有 $ this-> input-> post();