2016-12-01 61 views
-1

我试图设置它,所以我可以包括我的一个PHP文件基于下拉选择。我在这里找到另一个答案,似乎这样做,但当我尝试它时,我得到一个错误“未定义函数”。包含基于下拉选择的PHP文件

原来答案就在这里Original

这里是我的代码:

<?php 


$includes=array(
     'phpfile1'=>'phpfile1.php', 
     'phpfile2'=>'phpfile2.php' 
     ); 

if(isset($_POST['cmtype']) && array_key_exists($_POST['cmtype'], $includes)) : 
    get_template_part($includes[$_POST['cmtype']]); 
endif; 
?> 


<form id="selection_form" action="" method="post"> 
<select name="cmtype" id="cmtype"> 
<option value="default"> </option> 
<option value="phpfile1">PHP file 1</option> 
<option value="phpfile2">PHP File 2</option> 
</select> 
<input type="submit" name="select_mode_submit" value="Get File"> 
</form> 

当我选择的选项,并按下按钮,我得到的错误“get_template_part”。我认为它与IF语句中的函数有关,但我不知道如何解决它。

+1

get_template_part()定义在哪里? – markdwhite

+2

完整的错误将是有用的 –

+0

你甚至有一个文件,该函数'get_template_part'? –

回答

0
`get_template_part() 

是WordPress内置函数,并不是PHP内置函数。您的WordPress安装可能存在问题。

0

我没有意识到“get_template_part”从其他答案是特定于wordpress,我没有使用。所以相反,我试图改变它包括(),而不是按照巴特伯格曼建议,并且似乎工作正常。

谢谢大家!

0

很明显,您将根据您所做的选择选择文件名。但是你应该清楚在你做出选择之后你会做什么。在你的代码中你已经使用了get_template_part()函数,但是没有像这样的内置函数。如果你在wordpress中看到过,你应该知道函数是在某个地方定义的。所以你应该尝试在你的代码中定义。

0

只需使用include语句即可。

<?php 
$includes = array(
    'foo'=>'/tmp/foo.php', 
    'bar'=>'/tmp/bar.php' 
); 

if(
    $_SERVER['REQUEST_METHOD'] === 'POST' 
    && isset($_POST['cmtype']) 
    && array_key_exists($_POST['cmtype'], $includes) 
) { 
    include $includes[$_POST['cmtype']]; 
} 
?> 
<form action="" method="post"> 
    <select name="cmtype"> 
     <option value="foo">Foo</option> 
     <option value="bar">Bar</option> 
    </select> 
    <input type="submit" value="Include file"> 
</form>