有熟悉thinkPHP请进 页面连接出现错误

Fusuton 2010-09-20 10:22:31
正在写一个后台(admin文件夹)
index.html(在tpl—》defoult-》index文件夹下)文件是这么写的
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>工地后台管理</title>
</head>
<body>
<ul>
<li>工地管理
<ul>
<li><a href="/_APP_/Gd/index">添加工地</a></li>
<li><a href="/_APP_/Gd/add">添加工地</a></li>
</ul>
</li>
</ul>
</body>
</html>


add.html(在tpl—》defoult-》Gd文件夹下)文件是这么写的

<li><a href="_APP_/Gd/index">浏览工地</a></li>
<li><a href="_APP_/Gd/add">添加工地</a></li>
想要连接的文件是add.html
<body>
<form action="_URL_/save" method="post">
工地名称:<input type="text" name="gdname" /><br />
工地开始时间:<input type="text" name="gdstart" /><br />
工地结束时间:<input type="text" name="gdstop" /><br />
工地/出勤时间:<input type="text" name="gdcqtime" /><br />
工地负责人:<input type="text" name="gdfzr" /><br />
工地负责人电话:<input type="text" name="gdfzrdh" /><br />
<input type="submit" value="添加工地" /><br />
</form>
</body>



关于add.html的 action--Gdaction.php控件也已经写好:且放置位置及目录没有问题(lib-》action文件夹里)

<?php
class GdAction extends Action{
function index(){
}

function add(){
$this->display();
}

当在页面点击添加工地的时候,报错 连接不到http://localhost/tp/_APP_/Gd/add

请高手指点一下 是什么原因?(估计是_APP_连接问题)但不知为何报错

在这里真诚谢过
...全文
1101 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fusuton 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 kyzy_yy_pm 的回复:]

thinkphp的url访问有好几种,不知道你楼主的是哪种(默认是PATHINFO模式),PATHINFO的访问模式是:

http://domain/think目录/目录中的项目名/index.php/控制器名(***Action.class.php的名则为***)/控制器中的方法名(如没有默认为index方法)
[/Quote]

控制器哪里是indexaction的
kyzy_yy_pm 2010-09-21
  • 打赏
  • 举报
回复
thinkphp的url访问有好几种,不知道你楼主的是哪种(默认是PATHINFO模式),PATHINFO的访问模式是:

http://domain/think目录/目录中的项目名/index.php/控制器名(***Action.class.php的名则为***)/控制器中的方法名(如没有默认为index方法)
kyzy_yy_pm 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 fusuton 的回复:]
非常感谢

问题已经搞定了
在add.html文件下

_url_写错了 应该是__url__.

最后表示歉意

揪着一个问题费了你这么多时间~
[/Quote]让我又复习了下thinkphp,也不错,最近想要用用thinkphp看看效果如何,正好
Fusuton 2010-09-21
  • 打赏
  • 举报
回复
非常感谢

问题已经搞定了
在add.html文件下

_url_写错了 应该是__url__.

最后表示歉意

揪着一个问题费了你这么多时间~
kyzy_yy_pm 2010-09-21
  • 打赏
  • 举报
回复
系统常量
__ROOT__ : 网站根目录地址

__APP__ : 当前项目(入口文件)地址

__URL__ : 当前模块地址

__ACTION__ : 当前操作地址

__SELF__ : 当前 URL 地址

__CURRENT__ : 当前模块的模板目录

ACTION_NAME: 当前操作名称

APP_PATH: 当前项目目录

APP_NAME: 当前项目名称

APP_TMPL_PATH: 项目模板目录

APP_PUBLIC_PATH:项目公共文件目录

CACHE_PATH: 项目模版缓存目录

CONFIG_PATH:项目配置文件目录

COMMON_PATH: 项目公共文件目录

DATA_PATH: 项目数据文件目录

GROUP_NAME:当前分组名称

HTML_PATH: 项目静态文件目录

IS_APACHE : 是否属于 Apache

IS_CGI:是否属于 CGI模式

IS_IIS :是否属于 IIS

IS_WIN:是否属于Windows 环境

LANG_SET: 浏览器语言

LIB_PATH: 项目类库目录

LOG_PATH: 项目日志文件目录

LANG_PATH : 项目语言文件目录

MODULE_NAME:当前模块名称

MEMORY_LIMIT_ON: 是否有内存使用限制

MAGIC_QUOTES_GPC: MAGIC_QUOTES_GPC

TEMP_PATH :项目临时文件目录

TMPL_PATH: 项目模版目录

THINK_PATH: ThinkPHP 系统目录

THINK_VERSION:ThinkPHP版本号

TEMPLATE_NAME:当前模版名称

TEMPLATE_PATH :当前模版路径

VENDOR_PATH: 第三方类库目录

WEB_PUBLIC_PATH:网站公共目录
kyzy_yy_pm 2010-09-21
  • 打赏
  • 举报
回复
ThinkPHP框架基于模块和操作的方式进行访问,由于ThinkPHP框架的应用采用单一入口文件来执行,因此网站的所有的模块和操作都通过URL的参数来访问和执行。这样一来,传统方式的文件入口访问会变成由URL的参数来统一解析和调度。

ThinkPHP强大的URL解析、调度以及路由功能为这个功能实现提供了有力的保证,并且可以在绝大多数的服务器环境里面部署成功。

ThinkPHP支持的URL模式包括普通模式、PATHINFO模式、REWRITE模式和兼容模式,并且都提供路由支持。默认为PATHINFO 模式,提供最好的用户体验和搜索引擎友好支持。

例如普通模式下面的URL为:

http://localhost/appName/index.php?m=moduleName&a=actionName&id=1

如果使用PATHINFO模式的话,URL成为:

http://localhost/appName/index.php/moduleName/actionName/id/1/

PATHINFO模式对以往的编程方式没有影响,GET 和POST方式传值依然有效,因为系统会对PATHINFO 方式自动处理,例如上面URL地址中的id的值可以通过 $_GET['id'] 的方式正常获取到。

如果使用REWRITE模式,通过配置URL可以成为:

http://localhost/appName/moduleName/actionName/id/1/

例如上面生成的myApp项目如果我们通过下面的URL访问:

http://localhost/myApp/

其实是定位到myApp项目的Index模块的index操作,因为系统在没有指定模块和操作的时候,会执行默认的模块和操作,这个在ThinkPHP的惯例配置里面是Index模块和index操作。因此下面的URL和上面的结果是相同的:

http://localhost/myApp/index.php/Index/index/

通过项目配置参数,我们可以改变这个默认配置。

系统还支持分组模式和URL路由的功能,这些都能够带来URL的不同体验。
Fusuton 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 kyzy_yy_pm 的回复:]

url中的控制器部分去掉Action直接写xxx(加入xxxAction.class.php)就行了
[/Quote]

还是不懂你说什么

kyzy_yy_pm 2010-09-21
  • 打赏
  • 举报
回复
url中的控制器部分去掉Action直接写xxx(加入xxxAction.class.php)就行了
kyzy_yy_pm 2010-09-20
  • 打赏
  • 举报
回复
也有addAction这个方法吧
kyzy_yy_pm 2010-09-20
  • 打赏
  • 举报
回复
输出PHP_FILE看看是什么,然后根据这个推出action应该的路径(注意那个是根目录)

模模糊糊记得以前用的时候也是和楼主那样的(_APP_/Gd/add),楼主有GdController这个控制器吧
Fusuton 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuzuning 的回复:]
浏览了一下他的开发手册,原来是你写错了!!
_APP_ 应为 __APP__
_URL_ 应为 __URL__

左右都是两个下划线
[/Quote]

你的方法我试过了还是不行

上边有人说在app.class.php里设置查看 看了下 应该没有被禁止吧 如果要修改则么改?

//当前项目地址
define('__APP__',PHP_FILE);
//当前页面地址
define('__SELF__',$_SERVER['PHP_SELF']);
// 应用URL根目录
if(C('APP_DOMAIN_DEPLOY')) {
// 独立域名部署需要指定模板从根目录开始
$appRoot = '/';
}else{
$appRoot = __ROOT__.'/'.APP_NAME.'/';
}
$depr = C('URL_PATHINFO_MODEL')==2?C('URL_PATHINFO_DEPR'):'/';
$module = defined('P_MODULE_NAME')?P_MODULE_NAME:MODULE_NAME;
if(defined('GROUP_NAME')) {
$group = C('URL_CASE_INSENSITIVE') ?strtolower(GROUP_NAME):GROUP_NAME;
define('__URL__',PHP_FILE.'/'.((GROUP_NAME != C('DEFAULT_GROUP'))?$group.$depr:'').$module);
C('TMPL_FILE_NAME',TEMPLATE_PATH.'/'.GROUP_NAME.'/'.MODULE_NAME.C('TMPL_FILE_DEPR').ACTION_NAME.C('TMPL_TEMPLATE_SUFFIX'));
C('CACHE_PATH',CACHE_PATH.GROUP_NAME.'/');
}else{
define('__URL__',PHP_FILE.'/'.$module);
C('TMPL_FILE_NAME',TEMPLATE_PATH.'/'.str_replace(C('APP_GROUP_DEPR'),'/',MODULE_NAME).'/'.ACTION_NAME.C('TMPL_TEMPLATE_SUFFIX'));
C('CACHE_PATH',CACHE_PATH);
}
//当前操作地址
define('__ACTION__',__URL__.C('URL_PATHINFO_DEPR').ACTION_NAME);
define('__CURRENT__', __ROOT__.'/'.APP_NAME.'/'.$tmplDir.MODULE_NAME);
//项目模板目录
define('APP_TMPL_PATH', $appRoot.$tmplDir);
//网站公共文件目录
define('WEB_PUBLIC_PATH', __ROOT__.'/Public');
//项目公共文件目录
define('APP_PUBLIC_PATH', APP_TMPL_PATH.'Public');
return ;
}
xuzuning 2010-09-20
  • 打赏
  • 举报
回复
浏览了一下他的开发手册,原来是你写错了!!
_APP_ 应为 __APP__
_URL_ 应为 __URL__

左右都是两个下划线
hxzxy 2010-09-20
  • 打赏
  • 举报
回复
'__URL__/Gd/index'应该
kyzy_yy_pm 2010-09-20
  • 打赏
  • 举报
回复
楼主为何不baidu下呢,网上说_APP_是在App.class.php中配置的 ,楼主看看有没有这个文件
Fusuton 2010-09-20
  • 打赏
  • 举报
回复
我晕~ 现在问题肯定是__APP__这上

浏览时候提示找不到网站 估计是连接出了问题

怎么才能连上呢

你们这越说越糊涂了~~~

那些配置文件有必要改吗?
要改的话改什么呢?

还请细心教导哈~
f010528 2010-09-20
  • 打赏
  • 举报
回复
en en eneenenene
kyzy_yy_pm 2010-09-20
  • 打赏
  • 举报
回复
找出了以前写过的一段:
<form id="form1" method='post' action="__URL__/insert">




class IndexAction extends Action{
// 插入数据库
public function insert(){
kyzy_yy_pm 2010-09-20
  • 打赏
  • 举报
回复
记错了是
IndexAction.class.php
方法名(没有Action)
kyzy_yy_pm 2010-09-20
  • 打赏
  • 举报
回复
记得好像是thinkphp的控制器文件都是xxxController.php的形式,而控制器里得方法好像是***Action的形式
Fusuton 2010-09-20
  • 打赏
  • 举报
回复
addaction方法?这个有必要吗?
我是按视频教程来一步步编写的
下边是查询PHP_FILE后看到有关的定义
if(!defined('PHP_FILE'))
// PHP_FILE 由内置的Dispacher定义
// 如果不使用该插件,需要重新定义
define('PHP_FILE',_PHP_FILE_);

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧