我在数据库中有两个不同的用户表(编辑器和用户).如您所知,用户表和编辑器表只是在模块中使用.
我使用这种方式在Yii 1.1中将模块和主应用程序之间的用户实例分开.
但是我在yii 2中找不到方法.我尝试扩展yii\web\User并在模块中更改用户类但结果相同.如果我登录模块,可以从模块外的任何地方访问相同的用户实例.
我的模块init如下:
public function init()
{
parent::init();
\Yii::$app->set('user', [
'class' => 'app\modules\yonetim\components\yonetimUser',
'identityClass' => 'app\models\Editor',
'enableAutoLogin' => true,
'loginUrl' => ['yonetim/default/login'],
]);
}
Run Code Online (Sandbox Code Playgroud)
我也这样试试; 在config.php中
'components' => [
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'editor' => [
'class' => 'yii\web\User',
'identityClass' => 'app\models\Editor',
'enableAutoLogin' => true,
],
],
Run Code Online (Sandbox Code Playgroud)
但是这次我不使用授权角色(比如@)
如何在模块中使用不同的用户实例?
我想像这样加载控制器:
.state({
name: 'app.search',
url: 'search?q&opts',
templateUrl: '/templates/search.html',
controller: 'SearchCtrl',
resolve: {
deps: function($util){
return $util.load(['/ctrl/SearchCtrl.js']);
}
}
})
Run Code Online (Sandbox Code Playgroud)
控制器加载,但我得到以下错误,让我相信控制器没有注册:
Argument 'SearchCtrl' is not aNaNunction, got undefined
所以我的问题是,如果如图所示懒惰地加载控制器,我将如何注册控制器.
控制器定义为:
app.module('app').controller('SearchCtrl',function(){
});
Run Code Online (Sandbox Code Playgroud)
有什么办法可以强制控制器注册吗?
编辑应用程序已经建立并且所有工作都很精细.这个问题只适用于拉兹加勒丁.
问题与定义完全一样,控制器未注册,因为引导过程已经运行.我正在寻找一些在延迟加载时注册控制器的方法.
我的加载器功能($util.load()
看起来像这样:
load: function (){
if(arguments.length > 1){
var items = arguments;
}else{
var items = arguments[0];
}
var _self = this;
return $q(function(resolve,reject){
if(items.length == 0){
return resolve();
}
_self.async( items, function(item,next){
if(item.indexOf('.js') != -1){
_self.loadOne('script',item,next,function(err){
next(err);
});
}
else if(item.indexOf('.css') != -1){ …
Run Code Online (Sandbox Code Playgroud) 编辑:2016年12月3日
你只需要找到相当于ucwords的树枝?看到这个答案由哈维尔Eguiluz
我在twig上发现了几个关于调用php函数的帖子,这表明它应该受到支持,但它似乎不起作用.
{{ ucwords( item|replace({'_':' '}) ) }}
结果:l
超薄应用程序错误
由于以下错误,应用程序无法运行:
细节
类型: Twig_Error_Syntax消息:第101行的"home.twig"中不存在函数"ucwords"
文件: /usr/share/dev89/html/vhosts/local/libs/vendor/twig/twig/lib/Twig/ExpressionParser.php行:572
这个问题类似于一个关于java的问题,但我在php中这样做,所以我不认为它有资格作为重复.
我想要一种在调用此函数时生成确定性键的方法.该函数应该像读取缓存一样运行.如果密钥存在,则检索数据.如果没有,调用函数存储数据,然后返回它.
这是我拥有的,它的工作原理,但我不确定它是否安全,如果它的确定性足够甚至足够独特,因为我对这些主题完全没有理解.
// $call = function being called $args = arguments to that function
// $force = force cache to bypassed, then updated
public function cachedCall($call,$args = [],$force = false)
{
$cache = \App\App::getInstance()->cache;
$key = md5($call) . md5(serialize($args));
$res = $cache->get($key);
if($res === -1 || $force){
$res = call_user_func_array([$this,$call],$args);
if(!empty($res) && $res !== false && $res !== 0 && !is_null($res)){
$cache->set($key,$res,0); //never set empty data in the cache.
}
}
return $res;
}
Run Code Online (Sandbox Code Playgroud)
我的问题只涉及计算密钥的第三行.你可以看到它是由被调用的函数和要提供给该函数的参数计算的.我在某些情况下发生了碰撞.我正在寻找改进它的方法,因此它更有用,哈希是一致的但不太可能发生冲突.第三个参数可以忽略,因为它只是一种强制缓存被绕过的方法.
如何调用此函数的示例:
$data …
我正在尝试将一些 GeoJSON 导入到事件处理程序FeatureGroup
中_onFeatureGroupReady
,但它似乎没有渲染到地图中。该代码主要基于react-leaflet-draw
此处库中的示例。奇怪的是,编辑菜单变得可用,表明数据可能存在,但只是没有被渲染。
我不确定发生了什么,因为我总体来说是地图的初学者。相关代码在else if(this.props.data) {
块中。这些console.log()
报表均显示数据存在且格式正确。
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
37.79,
-122.45
],
[
37.79,
-122.42999999999999
],
[
37.77,
-122.42999999999999
],
[
37.77,
-122.45
],
[
37.79,
-122.45
]
]
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试将此数据导入到的代码FeatureGroup
:
_onFeatureGroupReady = (ref) => {
console.log('_onFeatureGroupReady');
console.log(ref);
if(ref===null) {
return;//bug???
}
this._editableFG = ref;
// populate the …
Run Code Online (Sandbox Code Playgroud) leaflet reactjs react-leaflet react-leaflet-draw leaflet-draw
我是websockets的新手.我刚刚完成了我的第一个多用途套接字服务器,它在同一个套接字中提供3种类型的消息.该服务器的用途如下:
chat messages
real time market data
user specific alerts
Run Code Online (Sandbox Code Playgroud)
前两个功能运行良好,我非常高兴,但是在识别和链接与特定帐户的连接中的对等方时,我完全失去了,因此我可以向特定用户提供待处理的警报通知.
基本上,我将警报消息存储在数据库表中,如下所示:
Table: uc_notifications
account(varchar50) | message(varchar255) | id(primary,AI) | seen(default 0)
Run Code Online (Sandbox Code Playgroud)
我想将对等体存储在一个表中,如下所示:
uc_notification_peers
account(varchar50) | peer_id(unique,varchar100) | id(primary,AI)
Run Code Online (Sandbox Code Playgroud)
基本上,我遇到的问题是将对等方的信息存储在数据库中,并检索它,以便我可以在读取通知表时将消息发送给选择对等方.脚本中的其他所有内容都有效.
我尝试的第一件事是使用onopen将帐户名称传递给websocket.这会使websocket崩溃.
我尝试的下一件事是通过与ip地址有关的全局变量访问用户会话.也没有工作,并导致所有帐户在同一个IP上收到消息(我在所有3个浏览器中的localhost上测试).
我尝试的最后一件事是第一种方法.我在开启事件上设置超时2秒,然后发送帐户消息.我终于能够在数据库中存储一个对等体了!但是,我懊恼时,我检查了数据库,它说("资源ID#6).我试图铸造$客户数组全局,但其空每次.我用Google搜索了一下周围,然后我试图序列化数组.这一切工作直到我到达我发送消息给唯一同伴的部分.
这是发送消息的功能
function send_message_single_client($msg,$client)
{
@socket_write($client,$msg,strlen($msg));
return true;
}
Run Code Online (Sandbox Code Playgroud)
这里是我使用此函数将最后100条消息推送到新对等方的聊天框的示例.
if (in_array($socket, $changed)) {
$socket_new = socket_accept($socket);
$clients[] = $socket_new;
$header = socket_read($socket_new, 1024);
perform_handshaking($header, $socket_new, $host, $port);
socket_getpeername($socket_new, $ip);
$found_socket = array_search($socket, $changed);
//need to push last 100 messages to new peer.
$query = $mysqli->query("SELECT * FROM …
Run Code Online (Sandbox Code Playgroud) 如何将javascript倒计时框与页面中心对齐?网址是js所在的网址是http://www.freelanceseohelp.com/offer/mobile/index.html
我尝试调整以下内容,但我遇到了问题:
.flip-clock-wrapper {
Run Code Online (Sandbox Code Playgroud)
我尝试将以上内容添加到
<div class="clock"></div>
Run Code Online (Sandbox Code Playgroud)
任何帮助解决这个问题将不胜感激.谢谢.
我已经看到了关于这个主题的其他问题,但我无法在我的代码中发现错误.
$('#submit_bulk').on('click',function(e){
var action = $('select[name="bulk_action"]'),
targets = $('table tr td:first-child :checkbox:checked');
if(action=='invalid' || targets.length == 0){
sk.alert('Nothing to do','warning');
return false;
}else{
$(this).html('Working....');
var fData = {
action: action,
mixtapes: '',
singles: ''
};
$.each(targets,function(i,v){
if($(this).data('type') == 'mixtape'){
fData.mixtapes += $(this).data('id')+',';
}else{
fData.singles += $(this).data('id')+',';
}
});
fData = $.param(fData);
console.log(fData); //i get no output here. is fData null?
$.post(window.location.origin+'/adminAPI/bulk_action',fData,function(data){
var data = JSON.parse(data);
if(data.error==0){
sk.alert('Your changes were saved','success');
//update view here.
}else{
sk.alert(data.message,'error');
}
});
$(this).html('go'); …
Run Code Online (Sandbox Code Playgroud) 当用户关闭或刷新浏览器时,我正在尝试更新数据库。这是我的代码:
$(window).bind('unload', function(){
$.ajax({
type: 'get',
async: false,
url: 'liberaLugar.php?idCurso=2'
});
});
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。提前致谢!