有没有人知道在Zend Framework中动态设置默认模块而不会遇到命名空间问题的方法?例如,我想要做的是有一个允许加载的模块表,其中一个模块被设置为默认模块.例如,我可能有:
admin
blog
calendar
Run Code Online (Sandbox Code Playgroud)
作为可以加载的模块.如果我将'blog'作为默认模块,则'admin'和'calendar'必须将其控制器命名为(Admin_IndexController,Calendar_IndexController),而'blog'不是(IndexController).
如果我将'calendar'更改为默认模块,由于命名空间,ZF无法再找到类.
你怎么解决这个问题?我目前正在使用以下代码:
$modules = new Modules();
$activeModules = $modules->fetchActive();
foreach($activeModules as $mod) {
$loadedModules[$mod->name] = '..application/modules/' . $mod->name . '/controllers';
if($mod->default) {
$defaultModule = $mod->name;
}
}
$frontController->setControllerDirectory($loadedModules);
$frontController->setDefaultModule($defaultModule);
Run Code Online (Sandbox Code Playgroud) 我不知所措,因为我不是一个Tomcat人.我需要使用第三方的Web服务,他们需要通过SSL进行客户端身份验证,因此他们生成并颁发了SSL证书.不幸的是,这是他们支持它,并不能给我任何方向如何实际使用它.我坚持使用这个第三方,所以不幸的是我不得不忍受他们缺乏支持.
所以我所拥有的是供应商为我们提供的Java应用程序(显然从未必须处理过这个问题),在CentOS 5.3上运行6.0.20的Tomcat应用服务器,以及来自第三方的SSL证书.
在这一点上我需要做什么?我在网上找到的就是如何设置密钥库,以便我的应用程序可以对连接到它的东西使用客户端身份验证,而不是在需要连接到其他人时,或者如何在端口8443上使用SSL(我知道如何做已经设置).
我的C#有点生疏,我以前从未用它编写XML.如果我尝试编写除元素之外的任何内容,我就无法将XML写入文件.这是我的测试代码:
var guiPath = txtGuiPath.Text;
MessageBox.Show("Dumping File: " + guiPath);
try
{
var writer = new XmlTextWriter("client_settings.xml", null);
writer.WriteStartDocument();
writer.WriteComment("Config generated on 01/01/01");
writer.WriteStartElement("Config");
writer.WriteStartElement("GuiPath");
writer.WriteString(guiPath);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
} catch (Exception ex) {
MessageBox.Show(ex.Message);
}
MessageBox.Show("Finished Dumping");
Run Code Online (Sandbox Code Playgroud)
如果guiPath为空,我会得到以下XML:
<?xml version="1.0"?>
<!--Config generated on 01/01/01-->
<Config>
<GuiPath />
</Config>
Run Code Online (Sandbox Code Playgroud)
但如果guiPath中有任何文本,那么没有任何内容写入文件.我甚至可以删除client_settings.xml文件并反复激活此代码,除非guiPath为空,否则永远不会生成XML文件.将类似"This is a test"的内容传递给WriteString()也可以.
更新
因为我试图写出一个系统路径,这似乎是个问题.如果我删除所有反斜杠,它将正确地写入结果字符串,但如果我将它传递给WriteString或WriteCData,则XML根本不会写入.
更新2
事实证明我遇到这么多问题的原因是因为XML文件是在guiPath设置的任何路径中生成的,而不是在应用程序运行的目录中生成的(所以对我来说看起来它没有生成在所有).因此,如果我将guiPath设置为'C:\ Program Files\externalApp\appName.exe',它将XML文件保存为'C:\ ProgramFiles\externalApp\client_settings.xml',而不是在应用的启动文件夹中.为什么,我不知道.我开始传递Application.StartupPath并将文件名附加到它,现在它工作得很好.
感谢您的帮助!
我需要获取用户点击Facebook iFrame应用程序的用户ID.在筛选所有虚假信息和过时信息时,我想我已经看到了正确的信息.
当用户点击页面时,我需要让他们授权应用程序.在我的PHP中我这样做:
$facebook = new Facebook($appData);
$user = $facebook->getUser();
if(!$user) {
echo '<script>top.location.href="'.$facebook->getLoginUrl().'";</script>';
die();
}
Run Code Online (Sandbox Code Playgroud)
这给了我授权请求,但然后将我推回到我的服务器,而不是iFrame App的URL(http://app.facebook.com/blah).我手动构建了URL并尝试将URL设置为app.facebook.com URI,但之后我收到一条错误消息,指出该URL对应用程序无效.
如何在授权后将其重定向回应用程序?这个应用程序将住在Facebook内,一般不在外面访问,所以我不是在寻找Facebook Connect登录.
编辑
这是我在使用request_uri时得到的确切错误:
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: Invalid redirect_uri: Given URL is not allowed by the Application configuration.
Run Code Online (Sandbox Code Playgroud) 我已经在这个应用程序迁移中挣扎了好几天了.我所拥有的是一个旧的MSSQL Server 2000支持的应用程序,它正在升级到运行SMSQL Server 2005的Windows 2003 Server.我对SQL Server知之甚少,但显然还不够.
我尝试通过转到数据库 - > [数据库] - >所有任务 - >备份数据库...,选择"完整"并保存文件来备份旧服务器上的数据库.我将该备份文件移动到新服务器并尝试进行恢复,但它抱怨说它正在旧服务器上的位置查找[Database] .mdf文件.
然后我尝试做一个导出数据,选择本地SQL 2000数据库,将其指向另一台机器上的新SQL 2005数据库,它一直到最后并且死于抱怨其中一个表的方式是加入.
我尝试在2000框上执行'生成SQL'命令并在SQL 2005下运行它.看起来有很多外连接使用SQL Server 2005不再支持的旧*=语法,这是供应商数据库,在设置这些表时不知道他们的真实意图.
有没有其他方法可以尝试迁移此数据库?
我在我正在构建的表单上使用jQuery验证,它工作得很好.我想要做的是当某些内容无效时,文本字段会更改颜色,错误消息将变为白色.我认为以下CSS可以工作:
label .error {color: white; font-weight: bold;}
input .error {background-color: pink; border: 1px dashed red; color: white}
Run Code Online (Sandbox Code Playgroud)
当我测试验证时,上面的CSS似乎不适用.我使用Firebug进行了检查,标签和输入区域都应用了"错误"类.
CSS似乎是有效的,因为当我放弃.error子句时,一切看起来我也想要它.我究竟做错了什么?
我有两个对象:File和FileDetail.文件可以有很多FileDetails,但FileDetail只能有一个文件.我可以让它工作,但由于关键的限制,我无法从数据库中删除任何内容(我无法删除文件行,因为FileDetail依赖于它,反之亦然).我有以下yaml:
File:
columns:
id:
type: integer
primary: true
autoincrement: true
...
fileDetail_id: integer
relations:
...
FileDetail:
local: fileDetail_id
foreign: id
cascade: [delete]
FileDetail:
columns:
id:
type: integer
primary: true
autoincrement: true
file_id: integer
...
relations:
...
File:
local: file_id
foreign: id
foreignAlias: Revisions
cascade: [delete]
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要发生的是当我删除File行时,所有子FileDetails也被删除.如果我可以手动删除所有FileDetail行然后是File行,那将会很好,但由于键约束,我无法:
1451 - Cannot delete or update a parent row: a foreign key constraint fails (`file`, CONSTRAINT `file_filedetail_id_file_detail_id` FOREIGN KEY (`filedetail_id`) REFERENCES `file_detail` (`id`))
Run Code Online (Sandbox Code Playgroud)
我如何才能使这种关系发挥作用(一方面是一对多,另一方面是一对一).或者我应该把它视为双方的多对多?
我正在构建一个聚合Wordpress网站中其他页面的页面,并显示有关它们的信息片段以及"赞"按钮.现在我正在使用iFrame选项.
当用户点击视频时,会将其显示在包含视频,某些文字和"赞"按钮的"功能"区域中.此HTML是从模板生成的,并在用户点击视频观看后创建.没有页面刷新.
如果我使用Like按钮的HTML5版本,它永远不会被渲染,我猜测是因为在调用Facebook初始化时,Like div永远不存在.我不想使用iFrame版本,因为它似乎不允许我让人们评论他们的喜欢.
有没有办法让Facebook重新扫描要渲染的元素?我知道Twitter会允许你通过twttr.widgets.load()随时运行来重新扫描要呈现的内容来实现这一点.
我安装了Visual Studio(本例中是Web Developer)Express Edition,正在阅读EULA.有一件事没有突然出现在我面前,我被允许使用该软件(私人,商业等).
有谁知道您是否被允许销售/分发您在这些Express版本中创建的代码?我知道它们面向业余爱好者和其他软件许可证,例如Office的学生版和教师版,不允许对软件进行商业用途.
我想最终开始通过OSS许可证(如BSD或GPL)发布代码,甚至可能会出售一些代码,但不确定我能用Express Editions做到这一点.
我有一个Java应用程序,我需要将我们现有的PHP网站与之集成.供应商希望我们进行服务器端重定向以允许安全身份验证和单点登录,但我不确定如何在PHP中执行此操作.供应商解释了工作流程如下:
这将允许我们的PHP应用程序安全地与Java应用程序通信,并且客户端永远不必发送任何类型的身份验证.
据我所知,.NET和Java内置了这种功能,但我无法在PHP中找到这样做的方法.有任何想法吗?
UPDATE
我不是在谈论使用标题("位置:......"); 函数进行重定向.具有此服务器端重定向的踢球者是应用程序执行身份验证并将所有信息发送回客户端,以便客户端随后登录.使用标头("位置:...")只是强制浏览器运行别处.
更新2
autologin.php(模拟用户通过curl登录外部应用程序)
// The login 'form' is at login.php
$ch = curl_init('http://domain.local/login.php');
// We are posting 2 variables, and returning the transfer just so it doesn't dump out
// Headers are processed by the callback function processHeaders()
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'processHeaders');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=user&password=pass');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute curl, close the connection, and redirect the user to a 'restricted' page
$response = curl_exec($ch);
curl_close($ch);
header("Location: …Run Code Online (Sandbox Code Playgroud) 我正在考虑在 Symfony2 中构建 REST API,并且在他们的自定义身份验证提供程序中,他们展示了如何构建 WSSE 身份验证系统,这对于我需要做的事情应该没问题。我将首先通过 cURL 构建和测试 API,因此我需要能够快速生成标头。我找到了一个JS 生成器,它显示了我需要的标题。
从我读到的内容来看,密码摘要应该是按顺序连接在一起的随机数、时间戳和用户密码的 base64 编码的 SHA1。我从以下数据开始:
$nonce = '4c5625ec7af5bdff';
$timestamp = '2013-04-03T04:46:19Z';
$password = 'mypass';
Run Code Online (Sandbox Code Playgroud)
并生成摘要:
$digest = base64_encode(sha1($nonce.$timestamp.$password));
Run Code Online (Sandbox Code Playgroud)
我不明白的是$digest变量现在设置为YTgxMDUzOWQzMDBiZmU1MmI2NWQ0YjYwNDc3ZmY5OWI3MmVlZTQyNA==,但是来自 JS 生成器的示例 PasswordDigest 显示为qBBTnTAL/lK2XUtgR3/5m3Lu5CQ=. 我一定在某处遗漏了一步,但我不确定它是什么。
我的大脑从来没有真正掌握链表和指针的细节,但我正在尝试用一些C++任务帮助一个朋友.(在我再进一步之前,是的,有std :: list但我正在寻找一个学术答案,也许会让链接列表对他和我自己更容易理解).
我们需要做的是Employee根据用户输入生成对象(对象)的链接列表,然后将该信息显示给用户.每当我尝试将对象分配到链接列表容器时,它就会发生段错误.
我有以下Linked List对象:
class LinkedListContainer {
private:
Employee *emp;
LinkedListContainer *next;
public:
Employee getEmployee() { return *emp; }
void setEmployee(Employee *newEmp) {
*emp = *newEmp // This is what is causing the segfault
}
LinkedListContainer getNext() { return *next; }
void setNext(LinkedListContainer *newContainer) {
*next = *newContainer;
}
}
Run Code Online (Sandbox Code Playgroud)
我确信我做的事情非常糟糕.