小编r3w*_*3wt的帖子

Yii 2模块中的单独用户实例

我在数据库中有两个不同的用户表(编辑器和用户).如您所知,用户表和编辑器表只是在模块中使用.

我使用这种方式在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)

但是这次我不使用授权角色(比如@)

如何在模块中使用不同的用户实例?

php yii2

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

注册lazyloaded controller angularjs

我想像这样加载控制器:

.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)

lazy-loading angularjs lazyload

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

如何在树枝上拨打ucwords?

编辑:2016年12月3日

我在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

twig

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

Memcached密钥生成从参数到函数

这个问题类似于一个关于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 …

php memcached md5

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

将geojson导入到react-leaflet-draw中

我正在尝试将一些 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

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

Websockets,并识别唯一的对等[PHP]

我是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)

php sockets websocket

4
推荐指数
1
解决办法
2058
查看次数

如何将js时钟与页面中心对齐?

如何将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)

任何帮助解决这个问题将不胜感激.谢谢.

css image center

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

TypeError:单击调用未实现接口HtmlElement的对象

我已经看到了关于这个主题的其他问题,但我无法在我的代码中发现错误.

$('#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)

javascript jquery

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

PHP更新数据库关闭窗口

当用户关闭或刷新浏览器时,我正在尝试更新数据库。这是我的代码:

$(window).bind('unload', function(){
    $.ajax({
        type: 'get',
        async: false,
        url: 'liberaLugar.php?idCurso=2'
    });
});
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。提前致谢!

javascript ajax jquery onbeforeunload

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