我的项目如下:
- root<br>
- module
- Application
- view
- application
- index
- index.phtml
- ZfcUser
- view
- zfc-user
- user
- login.phtml
(对不起,如果不可读的话,我的第一篇文章就是我尽我所能)
当我(从我的网络浏览器)http://site.local/user访问并且我已通过身份验证 ZfcUser显示login.phtml
现在我想显示一些来自我的模块应用程序的信息,但我不想在login.phtml或甚至任何ZfcUser控制器上编写特定代码,因为我认为这不是一个好习惯。< / p>
好的做法(我猜)应该是在应用程序上准备一个控制器,我给调用者一些内容。
我可以直接从login.phtml获取吗?
抱歉我的英文。如果您无法理解我的问题,请随时回复并要求进一步澄清,这不是我的主要语言。
我正在寻找最好的方法来真正了解它是如何完成的。
感谢您关注我的问题。
答案 0 :(得分:0)
感谢语法修正。
由于我得到了一些负面反馈(-3)我在这里发布我的解决方案也许如果有人遇到同样的问题会有帮助......
我已经在login.phtml上添加了类似的内容:
<?php
use Application\Controller\News
$news = new News();<br>
$newsContent = $news->getNewsTable();
?>
然后我可以在我的视图中使用此函数的结果。 它有效,我不认为这是一个很好的做法,应该避免,但至少它是有效的....:|
答案 1 :(得分:0)
这是我的解决方案(前一个是错误的,但我将其用于非正式/合乎逻辑的目的,我得到的答案)
登录后我没有进入ZfcUser,而是将请求路由到ZfcDataGrid。 要做到这一点,只需在ZfcUser / Controller /上编辑UserController.php 并将indexAction修改为:
if (!$this->zfcUserAuthentication()->hasIdentity()) {
return $this->redirect()->toRoute('zfcuser/login');
}
return $this->redirect()->toRoute('ZfcDatagrid');
在这里我们检查一下我们是否经过身份验证,如果我们要去ZfcDataGrid,如果不是,我们会转到默认的zfcuser登录。
在我的数据文件中我使用了这个:(在ZfcDataGrid数据文件中提供用于呈现网格的内容)
$sm = $this->getServiceLocator();
$this->newsTable = $sm->get('Application\Model\News');
$news = $this->newsTable->fetchAllToArray();
foreach ($news as $index=>$value) {
$data[$index] = $value;
}
return $data;
然后在我的.phtml
上<div name="zfcuser" style="position:relative; top:10px; left:80%;">
<div style="float:left; padding-right:16px;">
<?php echo $this->gravatar($this->zfcUserIdentity()->getEmail()) ?></div>
<h3><?php echo $this->zfcUserDisplayName() ?>!</h3>
<a href="<?php echo $this->url('zfcuser/logout') ?>">[Sign Out]</a>
<div style="clear:both;"></div>
</div>
<a class="btn btn-primary" href="<?php echo $this->url('ZfcDatagrid') ?>"
<?php echo $this->translate('cancelback') ?>
role="button" class="btn" data-toggle="modal">Cancel and back to previous page</a>
<?php
echo '
<h2>Title : ' . $new[0]['title'] . '</h2>'; ?>
<form method="post" action="somepage">
<textarea name="content" style="width:100%">
<?php echo '<p>' . $new[0]['content'] . '</p>
'?></textarea>
</form><a class="btn btn-primary" href="<?php echo
$this->url("news")."save";?>">
<?php echo $this->translate('Validate'); ?>
</a>
所以答案我发现在其他模块控制器上使用你需要的模型(使用Application \ Model \ NewsModel;) 然后在控制器上获取模型中的数据并将结果传递给视图。 然后在您的视图中显示数据。
如果有人能告诉我这是否是正确的方式来做我想做的事情,或者如果需要更多解释可以随意提问。
再次感谢你帮助卡洛斯,我真的很感激。
新年快乐:D