2011-07-19 91 views
0

我有点混乱!我需要知道如何从视图访问文件。 我的文件夹结构:包含zend视图中的文件

application 
-controllers 
-models 
-views 
    -helpers 
    -scripts 
    -report 
    index.phtml 
    sample.inc 

现在,如果我需要从index.phtml访问该文件,对于例如fopen('sample.inc','w+');失败。我必须在这里给出完整的路径吗?我在视图中的很多情况下都遇到了这个问题。这个sample.inc是一个供PHP/SWF图表使用的文件。

任何帮助,将不胜感激。

问候,

加扬

回答

1

如果你想读这样的文件时,应指定在哪个目录是。

你可以使用这两个解决方案之一,在你的index.phtml文件,访问sample.inc文件,使用完整路径:

  • dirname(__FILE__) . '/sample.inc'
  • __DIR__ . '/sample.inc' - PHP> = 5.3

dirname(__FILE__)__DIR__都指向包含它们在其中使用的文件的目录。


只需使用sample.inc ,PHP正在寻找在当前目录 - 当你的代码被执行这是不report之一。

+0

@martin你这里的意思是,如果我使用上述选项,我明确告诉PHP我的文件在哪里? –

+1

是的:您将使用完整路径*(包括目录,其父目录等)*,而不仅仅是文件名 - 尝试回显;-) –

0

你要做的事情叫做“查看部分”,请参阅 http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.partial。除此之外,我建议将sample.inc重命名为sample.partial.phtml,以遵循Zend Framework命名召集。

然而,在使用视图谐音时,需要指定要传递到局部的参数,你可以指定路径相对于视图脚本路径的路径,所以我想这应该工作:

<?php 
echo $this->partial('report/sample.partial.phtml', array(
    'var1' => $this->var1, 
    'var2' => $this->var2)); 
?> 

另一种方法是使用渲染()方法 - 这样你只需渲染当前视图的范围指定的视图脚本,所以你前人的精力已经从当前视图对象的所有变量:

<?php 
echo $this->render('report/sample.partial.phtml'); 
?> 

希望它有帮助:)

+0

谢谢@dennis,我会给这个一枪。 –

相关问题