0

I need to append a input field to the admin log in page. I have created an Observer.php hoping to do so. I simply want to add an input to the login form on the admin side.

app\code\local\Wsu\NewtworkSecurities\Model\Observer.php

class Wsu_NewtworkSecurities_Model_Observer extends Mage_Admin_Model_Observer {
    public function appendfeild() {
        echo $this->getLayout()->createBlock('wsu_newtworksecurities/newtworksecurities.feildblock')->toHtml();
    }
}

app\code\local\Wsu\NewtworkSecurities\etc\config.xml

<?xml version="1.0" encoding="utf-8"?>
    <config>
        <modules>
            <Wsu_NewtworkSecurities>
                <version>0.1.0</version>
            </Wsu_NewtworkSecurities>
        </modules>
        <global>
            <events>
                <controller_action_predispatch_adminhtml_index_index>
                    <observers>
                        <newtworksecurities>
                            <class>newtworksecurities/observer</class>
                            <method>appendfeild</method>
                        </newtworksecurities>
                    </observers>
                </controller_action_predispatch_adminhtml_index_index>
            </events>
        </global>
    </config>

app\design\adminhtml\default\default\layout\wsu\newtworksecurities.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <feildblock>
        <reference name="head">
            <action method="addJs">
                <script>wsu/newtworksecurities/newtworksecurities.js</script>
            </action>
        </reference>
    </feildblock>
    <default>
        <adminhtml_index_login>
            <update handle="feildblock" />
            <reference name="form.additional.info">
                <block type="wsu_newtworksecurities/wsu_newtworksecurities" name="wsu_newtworksecurities">
                    <action method="setFormId"><formId>backend_login</formId></action>
                    <action method="setImgWidth"><width>226</width></action>
                    <action method="setImgHeight"><width>50</width></action>
                </block>
                <block type="wsu_newtworksecurities/feildblock" name="newtworksecurities.feildblock"
                   template="wsu/newtworksecurities/feildblock.phtml" />
            </reference>
        </adminhtml_index_login>
    </default>
</layout>

app\design\adminhtml\default\default\template\wsu\newtworksecurities\feildblock.phtml

<input id="url" type="text" name="<?php echo $this->getfeildblock() ?>" />

EDIT

So the answer is that it should be the full package_extension class name in the config events node value. this was the fix, adding the wsu_ to the class value. Although @Vicky hit on another try I did, it was not full solution to appending to the login page. This is what I ended up as

        <controller_action_predispatch_adminhtml_index_login>
            <observers>
                <newtworksecurities>
                    <class>wsu_newtworksecurities/observer</class>
                    <method>appendfeild</method>
                </newtworksecurities>
            </observers>
        </controller_action_predispatch_adminhtml_index_login>

EDIT 2

Now although it I was able to get to the method I have not been able to get the html from the phtml to show up in the <?php echo $this->getChildHtml('form.additional.info'); ?> . I am expecting that app\design\adminhtml\default\default\template\wsu\newtworksecurities\feildblock.phtml was going to show up but as of yet nothing. I have read that I may be seeing that that block is being over write it's self, I have tried to change the events I'm observing with out change. I'm sure it's hitting my method as I added echo "TEST!!!!"; and I see it right at the top as expected. I don't see that block getting the template.

EDIT 3

It is worth noting that it works for the front end if I just do this, no config event, and use the layout update. So this is what works on the front.

app\design\frontend\base\default\layout\newtworksecurities.xml

<?xml version="1.0"?>
<layout>
    <feildset>
        <reference name="head">
            <action method="addJs">
                <script>wsu/newtworksecurities/newtworksecurities.js</script>
            </action>
        </reference>
    </feildset>

    <customer_account_create>
        <update handle="feildset" />
        <reference name="form.additional.info">
            <block type="wsu_newtworksecurities/feildset" name="newtworksecurities.feildset"
                   template="wsu/newtworksecurities/feildset.phtml" />
        </reference>
    </customer_account_create>

    <review_product_list>
        <update handle="feildset" />
        <reference name="product.review.form.fields.before">
                   
            <block type="wsu_newtworksecurities/feildset" name="newtworksecurities.feildset"
                   template="wsu/newtworksecurities/feildset.phtml" />
        </reference>
    </review_product_list>

    <wsu_newtworksecurities_error_index>
        <reference name="content">
            <block type="core/template" name="newtworksecurities.error" template="wsu/newtworksecurities/error.phtml"/>
        </reference>
    </wsu_newtworksecurities_error_index>

</layout>

app\code\local\Wsu\NewtworkSecurities\etc\config.xml

<?xml version="1.0" encoding="utf-8"?>
    <config>
        <modules>
            <Wsu_NewtworkSecurities>
                <version>0.1.0</version>
            </Wsu_NewtworkSecurities>
        </modules>

        <frontend>
            <layout>
                <updates>
                    <wsu_newtworksecurities>
                        <file>newtworksecurities.xml</file>
                    </wsu_newtworksecurities>
                </updates>
            </layout>
        </frontend>
    </config>

SO this works but I can't get it do work on the login page. I have added

  <admin>
    <layout>
      <updates>
        <wsu_newtworksecurities>
          <file>newtworksecurities.xml</file>
        </wsu_newtworksecurities>
      </updates>
    </layout>
  </admin>

to the config file and in

app\design\adminhtml\default\default\layout\wsu\newtworksecurities.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <feildset>
        <reference name="head">
            <action method="addJs">
                <script>wsu/newtworksecurities/newtworksecurities.js</script>
            </action>
        </reference>
    </feildset>

    <adminhtml_index_login>
        <update handle="feildset" />
        <reference name="form.additional.info">
            <block type="wsu_newtworksecurities/feildset" name="newtworksecurities.feildset"
                   template="wsu/newtworksecurities/feildset.phtml" />
        </reference>
    </adminhtml_index_login>

    <wsu_newtworksecurities_error_index>
        <reference name="content">
            <block type="core/template" name="newtworksecurities.error" template="wsu/newtworksecurities/error.phtml"/>
        </reference>
    </wsu_newtworksecurities_error_index>

</layout>
2
  • Are you sure that the event you're observing is the correct one? I would assume it would have to be controller_action_predispatch_adminhtml_index_login. I haven't tested this though.
    – Vicky
    Nov 6, 2013 at 9:16
  • I did try that one too and it didn't seem to work.. I base the index_index off the url
    – Quantum
    Nov 6, 2013 at 13:09

1 Answer 1

0

So the answer is that it should not be an observed event. Here is how I got it to work, in the config.xml I needed to update the adminhtml node.

<?xml version="1.0" encoding="utf-8"?>
<config>
  <modules>
    <Wsu_NewtworkSecurities>
      <version>0.1.0</version>
    </Wsu_NewtworkSecurities>
  </modules>
  <adminhtml>
    <layout>
      <updates>
        <wsu_newtworksecurities>
          <file>newtworksecurities.xml</file>
        </wsu_newtworksecurities>
      </updates>
    </layout>
  </adminhtml>
</config>

and in

app\design\adminhtml\default\default\layout\wsu\newtworksecurities.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <feildset>
        <reference name="head">
            <action method="addJs">
                <script>wsu/newtworksecurities/newtworksecurities.js</script>
            </action>
        </reference>
    </feildset>

    <adminhtml_index_login>
        <update handle="feildset" />
        <reference name="form.additional.info">
            <block type="wsu_newtworksecurities/feildset" name="newtworksecurities.feildset"
                   template="wsu/newtworksecurities/feildset.phtml" />
        </reference>
    </adminhtml_index_login>

    <wsu_newtworksecurities_error_index>
        <reference name="content">
            <block type="core/template" name="newtworksecurities.error" template="wsu/newtworksecurities/error.phtml"/>
        </reference>
    </wsu_newtworksecurities_error_index>

</layout>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.