【问题标题】:Pass a parameter to a method using PHP custom MVC使用 PHP 自定义 MVC 将参数传递给方法
【发布时间】:2015-05-13 14:27:47
【问题描述】:

我在 PHP 中使用自定义 MVC

我有两张桌子。

控制和教授

professors 表当然包含一个 id --> id_professor

controles 表包含一个名为 --> id_professors 的字段,我以这种方式在其中存储 profs id 列表 ==> 1;2;5;9

在我的数据表中,我从 controles 表中检索控件列表

对于模型,我正在使用这个类

public function fetchControlesListe(){
    stmt = $this->db->prepare("SELECT * FROM controles ");      
    $stmt->setFetchMode(PDO::FETCH_ASSOC);  
    $stmt->execute();
    return $stmt->fetchAll();       
}

控制器

liste_controles.php

class Liste_Controles extends Controller {
    function __construct(){
        parent::__construct();
    }
        $this->view->fetchCtrlListe= $this->model->fetchControlesListe();
        $this->view->render('liste_controles/index');
    }

查看

<table>
    <thead>
        <tr>                                                
            <th>N°</th>
            <th>Module</th>             
            <th>Salle</th>
            <th>Surveillants</th>               
        </tr>
    </thead>
    <tbody>
    <?php foreach($this->fetchCtrlListe AS $key=>$value): ?>
    <tr>                                                
        <td><?php echo $controle['id_controle']; ?></td>
        <td><?php echo $controle['intitule_module']; ?></td>            <
        <td><?php echo $controle['intitule_salle'];?></td>
        <td>
            <?php foreach($this->prof as $profs): ?>

这里,我想从 professors 那里检索教授列表 表和 professors 表中的字段 id_profs 存储一个 数组,如我之前所说,包含一个 id 列表(例如:1;2;3;4;5) 我想遍历该数组并检索 如果 id_professor 存在于该数组中,则来自 professors 表的教授 .我知道我必须创建另一个 METHOD 但问题是我不知道如何在方法中传递参数并从控制器调用它以将其传递给视图。参数是 $controle['id_professor']

            <?php endforeach; ?>
        </td>
    </tr>
<?php endforeach; ?>    
    </tbody>
</table>

结果会是这样的:

编辑

我知道将大量 id 存储为数组不是一个好主意,但是 我的问题我只想知道如何在里面做一个 foreach 循环 另一个 foreach 循环使用另一种方法,其参数将 从第一个循环传递

【问题讨论】:

  • 一个好的第一步是规范您的数据库,以便检索数据更加简单和高效。拥有这种东西 (1;2;5;9) 并不是很酷,并且不允许您正确管理数据。更多信息,你可以看看这个studytonight.com/dbms/database-normalization.php
  • 我知道是对的,但这次我必须这样做,因为我有义务
  • 忘记 1;2;5;6;阵列的东西。我只想知道如何使用另一种方法在另一个 foreach 循环中执行一个 foreach 循环,该方法的参数将从第一个循环传递
  • IMO,您应该在fetchControlesListe 中展开 id 列表并在那里获取教授行。不在您的模板中。您的模板应该只循环 100% 准备好显示的数据。不要从模板中解析和获取数据,那么你的职责分离很差,使用“MVC”模式毫无意义。

标签: php mysql model-view-controller


【解决方案1】:

没有一个解决方案,但您可以做的是,因为您知道 id_professors 是由逗号分隔的 id 组成的字符串,您可以通过这种方式检索标识符数组:

$ids = explode(",", $profs[id_professors']);

然后

<?php foreach($this->prof as $profs): ?>
   <?php $ids = explode(",", $profs['id_professors']); ?>
   <?php foreach($ids as $id): ?>
      //DO STUFF with $id
   <?php endforeach; ?>
<?php endforeach; ?>

请注意,由于不断打开/关闭 php 标签,整个事情并不是很漂亮,但我希望你能为你的 MVC 框架制作一个很棒的模板系统:)

从那里,直接从视图访问数据库并不是那么好,因此更好(不完美)的解决方案是为视图提供一个由像这样的教授组成的数组:

$this->view->profs_list = array(
1 => "Prof 1",
2 => "Prof 2",
//etc.
);

数组的键是教授的标识符。

然后你可以通过循环检索他们的名字:

<?php foreach($this->prof as $profs): ?>
   <?php $ids = explode(",", $profs['id_professors']); ?>
   <?php foreach($ids as $id): ?>
      <span><?php echo $this->profs_list[$id]; ?></span><br />
   <?php endforeach; ?>
<?php endforeach; ?>

【讨论】:

  • 是的,我知道这一点,但我的问题是我知道如何创建该方法并从控制器调用它以传递该值我的意思是:我想从 Foreach 循环中检索值在控制器中从另一个表中获取教授的名字你明白我的意思吗?看我发的图
  • 我知道,这没什么大不了的,因为我只是在做期末考试的考试项目,这个应用以后会被忽略:)
  • 我确实编辑了上面的内容,告诉我它是否有用
  • 我应该采用什么方法来包含 id_prof 作为参数来循环遍历这些 id?
  • 我的问题不是如何进行 foreach 循环或如何分解该数组以获取 id...我的问题是如何制作具有参数的方法以将 id_prof 传递给它从教授表中检索教授数据..? $this->prof 我放的只是一个例子,而不是我已经创建的方法。我想知道如何创建该方法!你明白我的意思吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多