我目前使用zend框架和使用jquery和php。尝试实现自动检查用户名可用性。使用zend框架调用函数
对于下面的代码,我需要调用我的user_availability.php这是在我的控制器文件夹。我做了/ controllers/user_availability,../user_availability,但它没有调用该页面。谁能帮忙?
$.post("user_availability.php",{ user_name:$(this).val() } ,function(data)
我目前使用zend框架和使用jquery和php。尝试实现自动检查用户名可用性。使用zend框架调用函数
对于下面的代码,我需要调用我的user_availability.php这是在我的控制器文件夹。我做了/ controllers/user_availability,../user_availability,但它没有调用该页面。谁能帮忙?
$.post("user_availability.php",{ user_name:$(this).val() } ,function(data)
,如果你忠实地想打电话与Zend框架的纯PHP文件,那么你需要把你的公共文件夹内,并把它作为/user_availability.php,但几乎可以肯定应该是更好地使用户可用性您的控制器之一
所以,如果让我说我有一个checkcontroller.php位于我的控制器和我的useravailability是在该页面的功能。我怎么称呼它? $。员额( “checkcontroller.php”,{USER_NAME:$(本).VAL()},功能(数据) 因为这不工作或者.. – Ryan 2010-01-31 15:22:13
你可以发布你的控制器的代码段, ?/或您的Zend应用布局 – roman 2010-01-31 16:27:20
类UsercheckController扩展化Zend_Controller_Action { \t \t \t公共职能的indexAction(){\t \t \t \t $查看=合适的词汇::得到( '查看'); \t \t \t $视图 - > render('register2.tpl'); \t \t $ users = new Users(); \t \t $ username = $ _POST ['username']; \t \t require_once'Zend/Db.php'; \t \t $ DB2 = Zend_Db的::工厂( 'PDO_MYSQL',阵列( \t \t \t '主机'=> '127.0.0.1', \t \t \t '用户名'=> 'roseadmin', \t \t \t“密码” => 'test123', \t \t \t 'DBNAME'=> 'roseuser', \t \t \t '端口'=> '3306' \t \t)); \t \t \t 如果\t($用户 - > checkUnique($ _ POST [ '用户名'])){ \t \t回声 “失败”; \t \t \t \t \t \t \t \t \t } \t } } – Ryan 2010-02-01 03:31:38
查找到行动和视图助手(取决于你想调用从脚本)的作用。动作助手可以从控制器调用,并可以保存在... /项目/库中。
从你可以调用你写,并存储在... /项目名称/应用/视图/佣工自定义视图助手视图。
您可能需要调整你的代码,以适应框架内更好,但只是创建需要一个帮手(包括)的.PHP脚本应该工作。
我不太明白。我试图调用控制器的代码位于视图文件夹中。 – Ryan 2010-02-01 03:39:57
看来你正在做一个页面请求到非控制器项目。无论何时,当您在Zend Framework中发出请求时,它都会尝试将请求的URL与系统中的路由相匹配,这与控制器操作相对应。所有这些都是通过您的应用程序的index.php
文件处理的 - 直接提供其他php文件的唯一方法是通过公用文件夹。
我的建议是创建检查一个Ajax请求,并在你的选择(XML,JSON)的格式返回的东西(而不是渲染HTML模板)的控制器操作。
public function userAvailableAction()
{
if ($this->getRequest()->isXmlHttpRequest()) {
// check user availability
$this->_helper->json($data);
}
}
我确实创建了控制器操作。但它只是不叫它。我从视图文件夹调用,该模板使用.tpl。这很重要吗? – Ryan 2010-02-01 03:43:23
谢谢大家。我找到了解决办法。
你只需要把功能的控制器页面并调用该函数的名称。
e.g:
$.post("check",{ user_name:$(this).val() } ,function(data)
然后在你的控制器文件checkusername可用性确保您添加检查功能。
我的控制器页面如下代码:
class RegisterController extends Zend_Controller_Action {
public function checkAction(){
$users = new Users();
$username = $_POST['username'];
if($users->checkUnique($_POST['username'])){
echo "fail";
}
}
在这种情况下,checkUnique只是一个SQL语句在我的模型控制器检查,如果用户名存在。
对于我的jQuery代码是:
$("#username").blur(function(){
//remove all the class add the messagebox classes and start fading
$("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
//check the username exists or not from ajax
$.post("check",{ user_name:$(this).val() } ,function(data){
if(data=='no'){ //if username not avaiable
$("#msgbox").fadeTo(200,0.1,function(){ //start fading the messagebox
//add message and change the class of the box and start fading
$(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
});
}else {
$("#msgbox").fadeTo(200,0.1,function(){ //start fading the messagebox
//add message and change the class of the box and start fading
$(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);
});
}
});
});
我从这个链接下面的例子:
http://roshanbh.com.np/2008/04/check-username-available-ajax-php-jquery.html。请看看它。我希望它有帮助。 =)
您能否提供其他信息。 user_availability.php结构如何?也许你可以发布该文件的内容。 – user250120 2010-02-07 20:25:11