2012-10-16 9 views
8

नए केकपीएचपी उपयोगकर्ता का उपयोग कर तत्व के रूप में लॉगिन फॉर्म को एम्बेड करना। मैं इस मुद्दे का समाधान नहीं ढूंढ पाया है।केकपीएचपी 2.x: केकेडीसी के उपयोगकर्ता प्लगइन और सुरक्षा घटक

मैं एक मौजूदा पृष्ठ में एक तत्व के रूप में एक लॉगिन फॉर्म एम्बेड करना चाहता हूं। मैं केकेडीसी उपयोगकर्ता प्लगइन का उपयोग कर रहा हूँ। लक्ष्य पृष्ठ में लॉगिन फॉर्म को एम्बेड करना है और फिर, जब वे लॉग इन करते हैं, पृष्ठ को रीफ्रेश किए बिना पृष्ठ पर कुछ सामग्री अपडेट करें। AJAX और SecurityComponent के बारे में चिंता करने से पहले, मैं कम से कम किसी अन्य पृष्ठ पर एम्बेड किए गए फॉर्म को तत्व के रूप में प्राप्त करना चाहता हूं।

शुरुआत करने वालों के लिए, मैंने तत्व में '/Views/Users/login.ctp' की सामग्री को कॉपी और पेस्ट करने की कोशिश की। इसने मुझे 'अपरिभाषित परिवर्तनीय "$ मॉडल" की चेतावनी दी, इसलिए मैंने मॉडल को' user.User 'के रूप में हार्डकोड किया (क्योंकि मुझे लगता है कि प्लगइन के अंदर एक मॉडल तक पहुंचने का संकेत' प्लगइन.मोडेल 'था जैसा उन्होंने कहा था । मैनुअल) यह त्रुटि संदेश त्रुटि के साथ विफल:। Users.usersController नहीं पाया जा सका

तो, मैं रूप से समायोजित लेने के लिए 'उपयोगकर्ता' $ मॉडल के बजाय मॉडल और अनुरोध अब blackholed हो जाता है के रूप में अगर मैं सुरक्षा घटक को अक्षम करता हूं, तो मैं सफलतापूर्वक लॉग इन कर सकता हूं। यह काफी संतोषजनक समाधान नहीं है (मेरा मतलब है, मैं फॉर्म को मान्य नहीं कर सकता हूं या अनलॉक एक्शन के रूप में 'लॉगिन' को परिभाषित नहीं कर सकता, लेकिन अगर मैं ऐसा करता हूं, तो मैं लॉगिन के लिए भी सुरक्षा सक्षम नहीं कर सकता, है ना?)

यहां है एप्लिकेशन/प्लगइन/उपयोगकर्ताओं के लिए कोड/देखें/तत्वों/login.ctp:

<div id="loginform"> 
<?php echo $this->element('Users.login'); ?> 
</div> 

अगर मैं:

<div class="users index"> 
<h2><?php echo __d('users', 'Login'); ?></h2> 
<fieldset> 
    <?php 
     echo $this->Form->create('User', array(
      'action' => 'login', 
      'id' => 'LoginForm')); 
     echo $this->Form->input('User.email', array(
      'label' => __d('users', 'Email'))); 
     echo $this->Form->input('User.password', array(
      'label' => __d('users', 'Password'))); 

     echo '<p>' . __d('users', 'Remember Me') . $this->Form->checkbox('remember_me') . '</p>'; 
     echo '<p>' . $this->Html->link(__d('users', 'I forgot my password'), array('action' => 'reset_password')) . '</p>'; 

     echo $this->Form->end(__d('users', 'Submit')); 
    ?> 
</fieldset> 

बाद

देखें कि तत्व बुला रहा है के लिए कोड है तत्व कोड को एक दृश्य में कॉपी और पेस्ट करें (कहें, apps/Plugin/Users/View/Users/login.ctp में), यह इस बात पर ध्यान देता है कि सुरक्षा चालू है या नहीं, इसलिए मुझे लगता है कि फॉर्म के साथ कुछ बंदरगाह या सुरक्षा कॉल क्रम में है।

किसी भी विचार या मदद की सराहना की जाएगी।

उत्तर

0

मुझे लगता है कि समस्या यह है कि तत्व अनिवार्य रूप से गूंगा विचार हैं - वे मॉडल के बारे में जानना नहीं चाहते हैं। आपको अपने आप में डेटा पास करना होगा।

मैं आमतौर पर ऑथ स्थापित करने के बाद अपने ऐपकंट्रोलर में $this->set("authUser", $this->Auth->user()); डालता हूं, इससे मुझे तत्वों सहित कहीं भी लॉग इन उपयोगकर्ता पर डेटा की जांच करने देता है। इसके अलावा

<?php echo $this->element("Users.login", array("user"=>$user));?>

, मैं आपकी शब्दों पर स्पष्ट छोड़ने नहीं हूँ, लेकिन लॉगिन एक खुला कार्रवाई होना चाहिए, अन्यथा कैसे उपयोगकर्ताओं को पहले से लॉग ऑन होगा:

तुम भी डेटा सीधे तो तरह पारित कर सकते हैं ?

संबंधित मुद्दे