0

私はCodeigniter、IonAuth + Hybridauthをインストールしており、これを作り直して、Facebookから返された姓名を使用してユーザー名を生成する代わりに、ユーザーが自分のユーザー名を選択できるようにしています。

したがって、以下のコードでは、ユーザー名が投稿されたかどうかを確認します。そうでない場合は、ビューをロードしたいのですchoose_usernameが、何らかの理由でビューがロードされず、そのセクションを完全にスキップしているため、追加しましたdie('Why no view')

更新: この最初のコードは、新しいコントローラーで正常に動作します

ここでコードをチェックアウトします。

if(isset($_POST['username'])){
                            $username = $this->input->post('username', TRUE);   
                            die($username);
                            }else{
                                $this->data['message'] = 'Please choose a username.';
                                $this->data['template'] = 'guests/partials/choose_username';
                                $this->load->view('guests/template/standard', $this->data);
                                die('Why no view?');
                            };

より長いバージョン:

function login_provider($provider = '')
    {
        if(empty($provider)) redirect();


    try
    {
        // create an instance for Hybridauth with the configuration file
        $this->load->library('HybridAuthLib');

        if ($this->hybridauthlib->serviceEnabled($provider))
        {
            // try to authenticate the selected $provider
            $service = $this->hybridauthlib->authenticate($provider);

            if ($service->isUserConnected())
            {
                // grab the user profile
                $user_profile = $service->getUserProfile();
                ////////////
                //var_dump($user_profile);
                //die();
                ////////////

                    $provider_uid = $user_profile->identifier;

                if($this->ion_auth->login_by_provider($provider,$provider_uid))
                {
                    $data['user_profile'] = $this->ion_auth->user_by_provider();
                    //$this->load->view('auth/user_profile',$data);
                    $user = $this->ion_auth->user()->row();


                    //Redirect to custom subdomain
                    $url = explode('://',site_url());
                    if (strpos(site_url(),$user->username) !== false) {
                    redirect($url[0].'://'.str_replace('www','',$url[1]).'dashboard','refresh');
                    }
                        else{
                        redirect($url[0].'://'.$user->username.str_replace('www','',$url[1]).'dashboard');
                        };

                }
                else
                { // if authentication does not exist and email is not in use, then we create a new user 

                //Check if username was posted

                        if(isset($_POST['username'])){
                            $username = $this->input->post('username', TRUE);   
                            die($username);
                            }else{
                                $this->data['message'] = 'Please choose a username.';
                                $this->data['template'] = 'guests/partials/choose_username';
                                $this->load->view('guests/template/standard', $this->data);
                                die('Why no view?');
                            };

したがって、上記のコードを実行すると、次の空白のページが表示されますWhy no view

4

1 に答える 1

1

上記のように、通常、この種の問題に遭遇した場合、それはビュー コードのバグによるものです。

また、ユーザー名データがない場合にこの投稿で実際に何が渡されているのかわかりませんが、ユーザー名の空の値も確認したい場合があります。これはおそらく問題ではありませんが、最初の if が期待どおりに評価されていることを確認することをお勧めします。

于 2013-01-28T00:55:20.460 に答える