小编Joh*_* N.的帖子

在CakePHP 2.0中加载供应商文件

我目前正在将我们的一个项目升级到CakePHP 2.0.不幸的是,代码的"第一行"会产生问题,我无法找到解决该问题的方法.

在CakePHP 1.3中,我在定义类App::import("Vendor", "facebook");之前就有了一个语句AppController.引用的文件位于/app/vendors/facebook/facebook.php(并包含base_facebook.php文件)本身.

我根据这里描述的文件命名和类加载尝试了许多不同的方法将文件包含在CakePHP 2.0中:CakePHP 2.0中的文件命名和类加载更改

我重命名了路径app/Vendor/Facebook/Facebook.php,或者app/Vendor/Facebook/facebook.php尝试了以下方法:

App::uses("Facebook", "Vendor/Facebook");
App::uses("Facebook", "Facebook");
App::uses("Facebook", "Vendor/Facebook/Facebook.php");
App::uses("Facebook", "Vendor");
Run Code Online (Sandbox Code Playgroud)

有没有人找到引用供应商文件的方法呢?由于延迟加载,上面的方法不会触发错误/警告,所以调试它有点烦人...

php cakephp cakephp-2.0

34
推荐指数
1
解决办法
5万
查看次数

Facebook Auth Dialog:关于使用"display"类型"popup"的开发人员警告

从今天开始,我们在auth对话框中收到开发人员警告,并显示以下消息:

您在大型浏览器窗口或选项卡中使用显示类型的"弹出窗口".为了获得更好的用户体验,请使用我们的JavaScript SDK显示此对话框,而不指定显式显示类型.SDK将为每个环境选择最佳显示类型.或者,如果您有特殊要求阻止您使用SDK,请在window.open()调用上设置高度和宽度以正确调整此对话框的大小.此消息仅对您的应用程序的开发人员可见.

直接在弹出窗口中提到的警告

我们有以下情况:

  • 用javascript我们打开一个新的弹出窗口
  • 弹出窗口的src是使用Facebook的PHP-SDK方法getLoginUrl设置的
  • popup本身的大小为400px×580px

PHP-SDK本身引用正确地使用它自己的代码中的"显示弹出="的:

如果您在JavaScript中使用生成的URL和window.open()调用,则可以将display = popup作为$ params的一部分传递.

JS-SDK文档说,打开的弹出窗口的最大尺寸应为400x580:

用于浏览器弹出窗口不超过400px乘以580px.使用此显示类型可以维护用户的上下文,而无需执行整页重定向.

所以,总结一下:根据文档,上面的实现应该没问题.是否有其他人有此警告或解决方案?

javascript facebook facebook-javascript-sdk facebook-php-sdk

25
推荐指数
1
解决办法
1万
查看次数

如何实现OG标签的国际化?

对于即将开展的项目,我们希望将我们的应用翻译成多种语言.看一下Facebook的"操作方法:开放图形国际化"页面,您将获得有关执行此操作的非常详细的信息.

所以,我们正确地实现了标签.以英语用户身份查看页面时,您会得到:

<meta property="og:url" content="https://site.url" />
<meta property="og:title" content="English title" />
<meta property="og:description" content="English description" />
<meta property="og:locale" content="en_US" />
<meta property="og:locale:alternate" content="de_DE" /> 
Run Code Online (Sandbox Code Playgroud)

对于德国用户来说,反之亦然:

<meta property="og:url" content="https://site.url" />
<meta property="og:title" content="German title" />
<meta property="og:description" content="German description" />
<meta property="og:locale" content="de_DE" />
<meta property="og:locale:alternate" content="en_US" /> 
Run Code Online (Sandbox Code Playgroud)

如文档中所述,我们查看"?fb_locale"-get参数,另外,解析HTTP_X_FACEBOOK_LOCALE标头以决定应显示哪个转换.

所以,我的问题如下:

  1. 使用Facebook调试器调试所提到的URL时(无论调试器中使用何种语言(例如?locale = de_DE))都会显示英文文本.这是调试器或预期行为的错误吗?

  2. 在调试器中单击备用语言环境链接时,会将一个?locale = de_DE附加到debugger-url,并且接口将更改为german.但是区域设置没有传递给url本身,因为它看起来是因为被删除的文本仍然是英文.有关这一个的任何提示吗?

  3. 手动附接"?fb_locale = de_DE这个"参数在调试器的URL,调试器的"对象属性"部分仍然英语,而"原始开放图形文件信息"中包含的德文翻译.这是正确的还是"对象属性"也应该更新?

  4. 是否有任何网站使用你知道的og-tags的正确国际化?在野外看到一个功能齐全的例子真是太棒了.

  5. 当直接在Facebook新闻源(作为具有德语Facebook的用户)粘贴提到的网站URL时,Facebook仅显示英语og文本.当一切正确实施时,它不应该在这种情况下显示德语文本吗?

facebook localization internationalization facebook-graph-api facebook-opengraph

9
推荐指数
1
解决办法
3636
查看次数

为什么CakePHPs cake_core_method_cache文件会随着时间的推移而变大?

我们有一个很大的CakePHP(目前是2.4.7)SAAS-app.它已经非常成熟,直到上周我们才对CakePHPs-core提供的功能有任何实际问题.

上周末我们遇到了一个非常惊人的情况,我们的应用程序变得非常缓慢和错误.我们查看了所有类型的服务器监控,发现在过去几个小时内i/o统计数据暴涨.经过一番调查后,我们将问题分离到了Cake的' cake_core_method_cache '文件中.平均每天,此文件的大小为200 kb.上周末,它达到了约40万桶.

部署例程的一部分是从app/tmp/cache和app/tmp/persistent文件夹中删除所有缓存文件.因为我们经常部署(每天几次),所以缓存会经常被清除.不幸的是,上周的假期暂停了我们的部署,看起来这是核心/缓存功能的问题.

所以,我的两个问题是:

a)有谁知道,为什么cake_core_method_cache会随着时间的推移变大?

b)有没有其他可能解决这个问题,以便不断删除这个文件?

php ubuntu cakephp cakephp-2.4

6
推荐指数
1
解决办法
745
查看次数

如何在CakePHP查找查询中正确嵌套自定义字段?

我们经常处理类似如下的代码:

return $this->find(
'all', [
  'fields' => ['DISTINCT Tag.tag', 'COUNT(Tag.tag) as count'],
  'group' => ['Tag.tag'],
  'order' => ['count' => 'DESC']
]);
Run Code Online (Sandbox Code Playgroud)

此查询引导我们进行以下输出:

[0] => Array
    (
        [Tag] => Array
            (
                [tag] => walls.io
            )

        [0] => Array
            (
                [count] => 15
            )

    )
Run Code Online (Sandbox Code Playgroud)

如您所见,查询以"某种方式错误"嵌套返回结果.遗憾的是,"count"字段被放入伪[0] - 阵列中.

IIRC,CakePHP在内部使用像Tag__field这样的语法来正确嵌套虚拟字段.

将代码更改为Model __-语法时,问题保持不变:

return $this->find(
'all', [
  'fields' => ['DISTINCT Tag.tag', 'COUNT(Tag.tag) as Tag__count'],
  'group' => ['Tag.tag'],
  'order' => ['COUNT(Tag.tag)' => 'DESC']
]);
Run Code Online (Sandbox Code Playgroud)

输出:

[0] => Array
    (
        [Tag] => Array
            (
                [tag] => …
Run Code Online (Sandbox Code Playgroud)

php mysql cakephp cakephp-model cakephp-2.4

5
推荐指数
1
解决办法
691
查看次数

CakePHP:总是使用clear()而不是create()?

在调用clear()create()循环内部之间存在一个小但非常重要的区别:

我们假设以下代码:

foreach ($posts as $post) {
  $this->Post->create();
  $this->Post->id = $post['Post']['id'];
  $this->Post->save(['column3' => 'foo', 'column4' => 'bar']);
}
Run Code Online (Sandbox Code Playgroud)

当执行create():第1列(可能默认为布尔值false)时,会神奇地添加到更新的字段中,并且可能导致数据丢失(想到post1 with column1 = true).

当执行a clear()而不是create():第1列时,保存语句中未提及的内容根本没有被触及.

那么,clear()在现有数据部分更新的情况下依赖它是否总是安全的?

我的问题的第二方:依靠它总是更好clear()吗?(当看到代码时clear(),你会发现,它只是一个方便的包装器create(false)).而在唯一的区别create(),并create(false)为缺省值的初始化.我认为,默认值最好直接在数据库级别设置.

顺便说一下:我刚刚提出了一个小的文档变更.随意为此+1:

php cakephp cakephp-2.5

3
推荐指数
1
解决办法
1789
查看次数

YouTube Data API V3:如何根据频道名称获取用户ID?

我想以编程方式用相应的用户ID(UCWLptbzZ ....)替换虚名称(如"thejntest").我在Channels-List调用中找不到任何可能性

在stackoverflow上搜索之后,我找到了以下线程(检索"虚荣"频道的Youtube频道信息),其中描述了搜索列表调用的用法.虽然在youtube上搜索给定的用户名和contenttype ="频道"是个好主意,但我根本没有收到令人满意的结果.(有时会有太多结果)

所以我想知道是否有另一种可能性来获取基于用户名的用户ID?或者依靠搜索查询的第一个结果,或通过仔细检查返回的用户名是否与给定的搜索查询相对应是否安全?

youtube-api

2
推荐指数
1
解决办法
8140
查看次数

调度程序偶尔会调用另一个应用程序的代码

我们刚刚将一些应用程序(从1.3)升级到cakephp 2.2并重构了代码.我们的基本服务器设置如下

  • htdocs中/ subdomain.domain/cakeapp1/...
  • htdocs中/ subdomain.domain/cakeapp2/...

有时我们收到错误,这是由于问题,蛋糕内部决定从另一个应用程序文件夹中调用代码.所以,我们从cakeapp1调用一条路线,突然间,在堆栈跟踪的中间,cake调用cakeapp2中的文件.

所以,虽然cakeapp1中没有代码引用"client"表,但我们收到以下错误:

Missing Database Table
Table clients for model Client was not found in datasource default.

Stack Trace
/home/www/subdomain.domain/cakeapp2/lib/Cake/Model/Model.php line 3180 ? Model->setSource(string)
/home/www/subdomain.domain/cakeapp2/lib/Cake/Model/Model.php line 2631 ? Model->getDataSource()
/home/www/subdomain.domain/cakeapp2/app/Model/AppModel.php line 22 ? Model->find(string, array)
/home/www/subdomain.domain/cakeapp2/app/Controller/AppController.php line 237 ? AppModel->find(string, array)
/home/www/subdomain.domain/cakeapp2/app/Controller/AppController.php line 41 ? AppController->__initializeAppSettings()
[internal function] ? AppController->beforeFilter(CakeEvent)
/home/www/subdomain.domain/cakeapp2/lib/Cake/Event/CakeEventManager.php line 246 ? call_user_func(array, CakeEvent)
/home/www/subdomain.domain/cakeapp2/lib/Cake/Controller/Controller.php line 670 ? CakeEventManager->dispatch(CakeEvent)
/home/www/subdomain.domain/cakeapp2/lib/Cake/Routing/Dispatcher.php line 183 ? Controller->startupProcess()
/home/www/subdomain.domain/cakeapp2/lib/Cake/Routing/Dispatcher.php line 161 ? Dispatcher->_invoke(UsersController, CakeRequest, CakeResponse)
APP/webroot/index.php line …
Run Code Online (Sandbox Code Playgroud)

php cakephp cakephp-2.0 cakephp-2.2

0
推荐指数
1
解决办法
1154
查看次数