我知道使用ZF1,您将使用自定义View Helpers检索模块/控制器名称,这将获得单例frontController对象并获取其名称.
使用ZF2,因为他们已经废除了很多框架的单独性质,并引入了DI,我为这个模块中的所有控制器指定了别名...我可以想象我会通过访问DI或者注入当前名称进入布局.
任何人都知道你会怎么做.我想有一百种不同的方法,但在嗅了几个小时的代码后,我无法弄清楚它现在应该如何完成.
我想要控制器名称的原因是将它作为特定控制器样式的类添加到主体.
谢谢,Dom
在IE7中追加时有没有办法检查单选按钮?
什么似乎在每个浏览器中都有效,看起来不像它在IE6,7中工作,尽管到处读到我正在做的正确.我完全不知道为什么它不起作用.
var $itemVariantRowRadio = $("<input/>")
.attr("type", "radio")
.attr("name", "itemvariant")
.addClass("itemvariant")
.val('whatever');
$itemVariantRowRadio.attr('checked', 'checked');
$itemVariantRow.append($itemVariantRowRadio)
Run Code Online (Sandbox Code Playgroud)
现在,如果我console.log($itemVariantRowRadio.attr('checked')在IE6/7中进行操作,那么它会将其设置为TRUE,但实际上收音机不会被检查或选中.
恶梦!其他人遇到过这种情况并有任何修复方法吗?
只是一个想法......并且想知道Gzipped JSON是否已经涵盖了这一点.
但是说你在响应中有一个游戏对象列表:
game = {
name: 'Randomer Quest!',
description: 'Randomer's Quest is a brilliant game!',
activated: true,
points: 10,
thumb: 'randomer-quest.jpg'
};
Run Code Online (Sandbox Code Playgroud)
当你json_encode这个,它变成151 bytes:
{"games": [{"name":"Randomer Quest!","description":"Randomer's Quest is a brilliant game!","activated":true,"points":10,"thumb":"randomer-quest.jpg"}]}
Run Code Online (Sandbox Code Playgroud)
好的......但是如果你有大约100个游戏的列表怎么办?这是关于13,913 bytes...但我们真的需要继续声明这些属性吗?我知道你可以解码它并循环它(神奇的)但是如果我们对它更加智能并在一个单独的对象中声明属性然后有一个数据数组呢?我们必须预先填充通常不存在的房产,但我仍然认为它值得.
像这样的东西:
{
"games": {
p: ["name", "description", "activated", "points", "thumb"],
d: [
["Randomer Quest!", "Randomer's Quest is a brilliant game!", true, 10, "randomer-quest.jpg"],
["Randomer Quest!", "Randomer's Quest is a brilliant game!", true, 10, "randomer-quest.jpg"]
]
}
Run Code Online (Sandbox Code Playgroud)
}
P是属性,D是数组中的数据.之后我们有:9,377 bytes67%的大小! …
我刚刚阅读了Rob Allen的akrabat ZF2教程(http://akrabat.com/wp-content/uploads/Getting-Started-with-Zend-Framework-2.pdf),了解如何将依赖项注入到你的东西中,例如注入将表适配器放入表类中.
这似乎是我应该这样做的:
array(
'Application\Model\DbTable\UserTable',
) => array(
'parameters' => array(
'config' => 'Zend\Db\Adapter\PdoMysql',
)
),
array(
'Application\Model\DbTable\UserProfileTable',
) => array(
'parameters' => array(
'config' => 'Zend\Db\Adapter\PdoMysql',
)
),
Run Code Online (Sandbox Code Playgroud)
好吧,这很酷,但我有大约84个表,所以我将不得不添加其中每一个,并说我希望PdoMySQL注入所有这些.有没有正确的方法来指定我的整个DbTable文件夹?甚至没有这个工作:
array(
'Application\Model\DbTable\UserTable',
'Application\Model\DbTable\UserProfileTable'
) => array(
'parameters' => array(
'config' => 'Zend\Db\Adapter\PdoMysql',
)
),
Run Code Online (Sandbox Code Playgroud)
其他人这样做并找到了更好的解决方案?
谢谢,Dom
php model-view-controller dependency-injection zend-framework2
我有一个存储在我的数据库中的值的对象.我的对象还包含另一个对象,它只使用它的ID(外键)存储在数据库中.
http://framework.zend.com/manual/2.0/en/modules/zend.stdlib.hydrator.html
Hydrator/exchangeArray在ZF2中的功能之前,您将使用Mapper来获取创建对象所需的一切.现在我试图通过仅使用Hydration/exchangeArray填充我的对象来消除这个额外的图层,但是在创建嵌套对象时有点困难.
我的实体是否应该将Inner对象的表注入其中,以便在将其ID传递给我的'exchangeArray'时创建它?
以下是示例实体作为示例.
// Village
id, name, position, square_id
// Map Square
id, name, type
Run Code Online (Sandbox Code Playgroud)
将square_id发送到我的Village的exchangeArray()函数.它将获得mapTable并使用水合器使用我拥有的ID拉入方块.
在我的实体中有映射器实例似乎是不对的,因为我认为它们应该与任何东西断开连接,除了它自己的实体特定的参数和功能?
我正在尝试使用某种类型的可滚动叠加层来覆盖网站的其余部分.我似乎无法在我的固定元素中的绝对元素上获得100%的高度.
http://codepen.io/intellix/pen/GBltK
section {
background: red;
position: fixed;
top:0;
right:0;
bottom:0;
left:0;
overflow-x:auto;
}
article {
background: blue;
position: absolute;
top:0;
width:300px;
bottom: 0;
left: 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我设置底部:0; 在绝对元素上,它在页面不溢出时填充高度.页面溢出时会留下空隙.
当我使用bottom:auto在我的绝对元素上,它会溢出溢出的高度,但留下一个没有溢出的间隙!
如果您调整窗口大小以使内容适合然后调整大小以使内容不适合,您可以看到它在两种情况下都不起作用.
有没有办法让左,第一列有一个最小宽度......像50%?
我有不同数量的单独表格(标题不同,因此它们是单独的数据).
显然,表格列根据内容的多少来改变它们的宽度...如果它需要额外的空间,那么它将占用同一个表中其他列的更多空间......这很酷但是当它有很多空间而且它没有如果它们都保持相同的宽度,那么它需要任何额外的空间然后它更整洁......就像50%
任何想法如何做到这一点,而无需在PHP中测试它们内部有多少内容并添加不同的类?
尝试使用嵌套选择Zend\Db\Sql\Select,在文档或谷歌上看不到任何内容.
想要做这样的事情:
SELECT
table1.*,
(SELECT x,y,z FROM table2 WHERE table2.a = table1.a) as b
FROM table1
Run Code Online (Sandbox Code Playgroud)
没有嵌套选择,它看起来像这样:
$select = new Zend\Db\Sql\Select;
$select
->columns(array(
'*'
))
->from('table1')
Run Code Online (Sandbox Code Playgroud)
ZF1着眼于创建一个subSelect项目,然后将其作为一个Expression添加到列列表中,但在ZF2中它抱怨一个Expression需要是一个字符串.
编辑:嵌套选择需要作为一列,因为当在同一列名上使用GROUP BY时,我最终会得到相乘的行.这是我想要进入的正确查询Zend\Db\Sql\Select:
SELECT
users.id,
(SELECT count(explorations.id) FROM explorations WHERE user_id = users.id) as total_explorations,
count(villages.id)
FROM
users
INNER JOIN
villages
on (villages.user_id = users.id)
GROUP BY
users.id
Run Code Online (Sandbox Code Playgroud) 如果我的函数返回了一个被拒绝的承诺但是似乎无法在这个问题上找到任何令人惊讶的东西,那么尝试使用AngularMock在Karma中进行单元测试.
我有一个像UserService这样的服务,它有一个函数:processIdentityResponse它根据里面的逻辑返回一个被解析或被拒绝的promise:
processIdentityResponse: function(response)
{
var deferred = $q.defer();
if (response.data.banned) {
deferred.reject(response);
} else {
deferred.resolve(response);
}
return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
我想测试一下,如果被禁止的属性存在,则返回被拒绝的承诺,如果没有,则它被解决...我怎样才能实现这一点?
我试过以下这样的事情没有成功:
it('should return a rejected promise if status is a string', function() {
var rejected = false;
UserService.processIdentityResponse(data).catch(function() {
rejected = true;
});
expect(rejected).toBe(true);
});
Run Code Online (Sandbox Code Playgroud) 试图从使用 PHP NumberFormatter 格式化的货币中删除最后一个 .00,但似乎不可能。我可以看到这个选项,但它似乎不会影响货币:DECIMAL_ALWAYS_SHOWN
$nf = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$nf->formatCurrency(0, 'EUR');
// Output is €0.00 but it doesn't seem possible to remove the .00
Run Code Online (Sandbox Code Playgroud)
我会为 .00 做一个 str_replace ,但这可能会因语言环境而异,所以看起来并不那么容易。
php ×4
css ×2
html ×2
javascript ×2
ajax ×1
angularjs ×1
css-tables ×1
jquery ×1
json ×1
oop ×1
radio-button ×1