gpt4 book ai didi

php - Controller 设计 - 多 subview - 尝试添加一个主视图

转载 作者:行者123 更新时间:2023-12-03 01:47:55 31 4
gpt4 key购买 nike

您好,我不太确定如何在项目中实现我的愿景。

首先,让我们专注于订单 Controller 。

所以我的订单由许多 subview 组成。例如,详细信息、历史记录、地址、附加文件、注释等。我将它们放在 jQuery 选项卡界面上。

让我们展示一些代码。

布局.php

<div class="page-content">
<div class="row">
<div class="col-md-12">
<ul class="nav nav-tabs responsive hidden-xs hidden-sm">

<li class="<?php echo ($activeTabSub === "1") ? "active" : ""; ?>">
<a href="<?PHP echo base_url();?>x/y/<?PHP echo $zgl; ?>">Master details</a>
</li>
<li class="<?php echo ($activeTabSub === "2") ? "active" : ""; ?>">
<a href="<?PHP echo base_url();?>x/y/<?PHP echo $zgl; ?>">History</a>
</li>
<li class="<?php echo ($activeTabSub === "wyk") ? "active" : ""; ?>">
<a href="<?PHP echo base_url();?>x/y/<?PHP echo $zgl; ?>">Address</a>
</li>
<li class="<?php echo ($activeTabSub === "3") ? "active" : ""; ?>">
<a href="<?PHP echo base_url();?>x/y/<?PHP echo $zgl; ?>">Files</a>
</li>
<li class="<?php echo ($activeTabSub === "4") ? "active" : ""; ?>">
<a href="<?PHP echo base_url();?>x/y/<?PHP echo $zgl; ?>">Notes</a>
</li>
<li class="<?php echo ($activeTabSub === "7") ? "active" : ""; ?>">
<a href="<?PHP echo base_url();?>x/y/<?PHP echo $zgl; ?>">ETC</a>
</li>
<li class="<?php echo ($activeTabSub === "8") ? "active" : ""; ?>">
<a href="<?PHP echo base_url();?>x/y/<?PHP echo $zgl; ?>">ETC</a>
</li>
<li class="<?php echo ($activeTabSub === "9") ? "active" : ""; ?>"><a href="<?PHP echo base_url();?>x/y/<?PHP echo $zgl; ?>">ETC</a>
</li>
</ul>
</div>
</div>
<?PHP $this->load->view($widget,$activeTabSub); ?>
<?PHP $this->load->view($main_content,$activeTabSub); ?>
</div>

在我的示例中,$widget View 是一个 subview ,它是一个带有工具的小部件,例如每个单独的 activeTabSub 的不同编辑/添加按钮。 $main_content 是每个人的 html View 。

现在是 Controller [Order]

public function functiontolink1()
{
$data['main_content'] = 'x/y';
$data['widget'] = 'x/widget';
$data['heading'] = "";
$data['activeTab'] = 'pzlec';
$data['activeTabSub'] = '2';
$data['strona'] = 'text';
$data['dzial'] = 'text';
$seg= $this->uri->segment(3);
$data['zgl'] = $seg;
if(isset($seg)){
$data['pracownicy'] = $this->Zlecenia_model->pracownicy($zgloszenie);
switch($this->userGroup){
case 1 :
$data['main_content'] = 'x/y';
break;
case 2 :
$data['main_content'] = 'x/y';
break;
case 3 :
$data['widget'] = 'Client/x/widget';
$data['main_content'] = 'Client/x/y';
break;
default: show_404(); break;

}
$this->load->view('Client/x/layout',$data);

}else{
show_404();
}
}

public function functiontolink2()
{

$data['widget'] = 'x/widget';
$data['heading'] = "";
$data['activeTab'] = 'pzlec';
$data['activeTabSub'] = '2';
$data['strona'] = 'text';
$data['dzial'] = 'text';
$seg= $this->uri->segment(3);
if(isset($seg)){
$data['zgl'] = $seg;
$data['json'] = $this->Zlecenia_model->getSingle($zgloszenie);
$vvv= json_decode($data['json']);
$data['client'] = $this->Order_model->getclient($vvv[0]->klient);
switch($this->userGroup){
case 1 :
$data['main_content'] = 'x/y';
break;
case 2 :
$data['main_content'] = 'x/y';
break;
case 3 :
$data['widget'] = 'Client/x/widget';
$data['main_content'] = 'Client/x/y';
break;
default: show_404(); break;

}
$this->load->view('Client/x/layout',$data);
$this->load->view('zgloszenie/layout',$data);
}else{
show_404();
}
}

正如您所想象的,每个链接我都有 9 个这样的 View 函数。 当我想要一些数据,即跨这 9 个 subview 的客户端数据时,问题就开始了 - 仅调用一次,而不是每个页面都点击 [ tab ]。我不太确定我的设计尝试是否好。您有什么建议吗?

最佳答案

好的 - 在前面声明编码风格是个人的,有些人根本不同意我的建议。

我对你正在做的事情的印象 - 是你试图在 Controller 或 View 中做所有事情。就在你的 Controller 中这段代码

 $data['main_content'] = 'x/y';
$data['widget'] = 'x/widget';
$data['heading'] = "";
$data['activeTab'] = 'pzlec';
$data['activeTabSub'] = '2';
$data['strona'] = 'text';
$data['dzial'] = 'text';

这太具体了。控制者应该是一个高级别的老板——你不会为低级细节而烦恼。 “从数据库中获取这个 - 它回来了吗?如果是,则执行此操作。如果没有,则执行此操作。”

换句话说 - 底层细节会不断变化。你必须为这些改变做好计划。并且您不想不断更改 Controller ,因为任何错误都会导致您的应用程序崩溃。

这就是模型的用途。人们会再次对此争论并说不,它应该是图书馆或帮助者或其他什么。关键是您想要隔离这些低级细节,并且想要将它们放在有意义的地方。因此六个月后,您可以查看文件名并清楚地知道需要在哪里进行更新。最好有 10 个具有特定名称和特定任务的模型,然后是几个试图做太多事情的 super 模型。

说到尝试做太多事情 - 重构这些 Controller 方法,这样它们就不会尝试做太多不同的事情。例如,如果因为 $seg 不存在而要显示 404,为什么要提取一堆数据呢?检查 $seg 是否有效应该是第一个任务。如果有效则转到下一个方法。如果无效,则不显示 404 - 显示特定于该错误的礼貌页面。然后当它发生时,你就有机会找出问题所在。

最后我建议 - 让你的布局模板完全中立 - 换句话说,没有 html 代码。它只是调用其他 View 。那又是做什么的呢?它将底层细节(例如 html 和 css 布局代码)推送到自己的文件中。布局模板只调用布局 View 。因此,当您需要进行更改时,很清楚该去哪里,并且如果您犯了错误,您不会突然关闭模板 - 您已将其限制在 View 文件中,这将更容易处理。

关于php - Controller 设计 - 多 subview - 尝试添加一个主视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36923144/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com