Áú»¢¶Ä²©

This is a translation of the original English documentation page. Help us make it better.

§¬§â§Ö§Ú§â§Ñ?§ä§Ö §Þ§à§Õ§å§Ý (§Ó§à§Õ§Ú§é)

§°§Ó§à ?§Ö §Ó§à§Õ§Ú§é §Ü§à§â§Ñ§Ü §á§à §Ü§à§â§Ñ§Ü §Ü§à?§Ú §á§à§Ü§Ñ§Ù§å?§Ö §Ü§Ñ§Ü§à §Õ§Ñ §ß§Ñ§á§â§Ñ§Ó§Ú§ä§Ö ?§Ö§Õ§ß§à§ã§ä§Ñ§Ó§Ñ§ß Áú»¢¶Ä²© §Ü§à§â§Ú§ã§ß§Ú§é§Ü§Ú §Ú§ß§ä§Ö§â§æ§Ö?§ã §Þ§à§Õ§å§Ý.§³§Ó§Ö §Õ§Ñ§ä§à§ä§Ö§Ü§Ö §à§Ó§à§Ô §Þ§à§Õ§å§Ý§Ñ §Þ§à§Ø§Ö§ä§Ö §á§â§Ö§å§Ù§Ö§ä§Ú §Ü§Ñ§à ZIP §Ñ§â§ç§Ú§Ó§å: MyAddress.zip.

§º§ä§Ñ ?§Ö§ê §Ú§Ù§Ô§â§Ñ§Õ§Ú§ä§Ú

§´§à§Ü§à§Þ §à§Ó§à§Ô §Ó§à§Õ§Ú§é§Ñ, §á§â§Ó§à ?§Ö§ä§Ö §Ü§â§Ö§Ú§â§Ñ§ä§Ú §Þ§à§Õ§å§Ý §Ü§à§â§Ú§ã§ß§Ú§é§Ü§Ú §Ú§ß§ä§Ö§â§æ§Ö?§ã§Ñ §Ü§à?§Ú §Õ§à§Õ§Ñ?§Ö §ß§à§Ó§Ú §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ§Ñ §Ù§Ñ§ä§Ú§Þ §Ô§Ñ §Ü§à§ß§Ó§Ö§â§ä§å?§ä§Ö §å more advanced §Þ§à§Õ§å§Ý §Ü§à§â§Ú§ã§ß§Ú§é§Ü§à§Ô §Ú§ß§ä§Ö§â§æ§Ö?§ã§Ñ §Ü§à?§Ú §á§à§ã§ä§Ñ§Ó?§Ñ HTTP §Ù§Ñ§ç§ä§Ö§Ó §ß§Ñ https://api.seeip.org §Ú §á§â§Ú§Ü§Ñ§Ù§å?§Ö §à§Õ§Ô§à§Ó§à§â - IP §Ñ§Õ§â§Ö§ã§å §Ó§Ñ§ê§Ö§Ô §â§Ñ§é§å§ß§Ñ§â§Ñ - §ß§Ñ §ß§à§Ó§à? §ã§ä§â§Ñ§ß§Ú§è§Ú §å §ß§à§Ó§à§Ü§â§Ö§Ú§â§Ñ§ß§à§Þ §à§Õ§Ö?§Ü§å §Þ§Ö§ß§Ú?§Ñ §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ.§¦§Ó§à §Ü§Ñ§Ü§à ?§Ö §Ô§à§ä§à§Ó §Þ§à§Õ§å§Ý §Ú§Ù§Ô§Ý§Ö§Õ§Ñ§ä§Ú:

Part I - §¯§à§Ó§Ú §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ

§¥§à§Õ§Ñ?§ä§Ö §á§â§Ñ§Ù§Ñ§ß §Þ§à§Õ§å§Ý §å §Ü§à§â§Ú§ã§ß§Ú§é§Ü§Ú §Ú§ß§ä§Ö§â§æ§Ö?§ã Áú»¢¶Ä²©-§Ñ
  1. §¬§â§Ö§Ú§â§Ñ?§ä§Ö §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ MyAddress §å modules §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ§å §Ó§Ñ§ê§Ö Áú»¢¶Ä²© §Ú§ß§ã§ä§Ñ§Ý§Ñ§è§Ú?§Ö §Ü§à§â§Ú§ã§ß§Ú§é§Ü§à§Ô §Ú§ß§ä§Ö§â§æ§Ö?§ã§Ñ (§ß§Ñ §á§â§Ú§Þ§Ö§â, zabbix/ui/modules).

  2. §¯§Ñ§á§â§Ñ§Ó§Ú§ä§Ö §Õ§Ñ§ä§à§ä§Ö§Ü§å manifest.json §ã§Ñ §à§ã§ß§à§Ó§ß§Ú§Þ §Þ§Ö§ä§Ñ§á§à§Õ§Ñ§è§Ú§Þ§Ñ §Þ§à§Õ§å§Ý§Ñ (§á§à§Ô§Ý§Ö§Õ§Ñ?§ä§Ö §à§á§Ú§ã §á§à§Õ§â§Ø§Ñ§ß§Ú§ç §á§Ñ§â§Ñ§Þ§Ö§ä§Ñ§â§Ñ).

ui/modules/MyAddress/manifest.json

{
           "manifest_version": 2.0,
           "id": "my-address",
           "name": "My IP Address",
           "version": "1.0",
           "namespace": "MyAddress",
           "description": "My External IP Address."
       }
  1. §µ §Ü§à§â§Ú§ã§ß§Ú§é§Ü§à§Þ §Ú§ß§ä§Ö§â§æ§Ö?§ã§å Áú»¢¶Ä²©-a, §Ú§Õ§Ú§ä§Ö §ß§Ñ §¡§Õ§Þ§Ú§ß§Ú§ã§ä§â§Ñ§è§Ú?§Ñ ¡ú §°§á§ê§ä§Ö ¡ú §®§à§Õ§å§Ý§Ú §ã§Ö§Ü§è§Ú?§å §Ú §Ü§Ý§Ú§Ü§ß§Ú§ä§Ö §ß§Ñ §Õ§å§Ô§Þ§Ö §³§Ü§Ö§ß§Ú§â§Ñ? §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ.

  1. §±§â§à§ß§Ñ?§Ú§ä§Ö §ß§à§Ó§Ú §Þ§à§Õ§å§Ý §®§à?§Ñ IP §Ñ§Õ§â§Ö§ã§Ñ §ß§Ñ §Ý§Ú§ã§ä§Ú §Ú §Ü§Ý§Ú§Ü§ß§Ú§ä§Ö §ß§Ñ §ç§Ú§á§Ö§â§Ó§Ö§Ù§å "§°§ß§Ö§Þ§à§Ô§å?§Ö§ß§à" §Õ§Ñ §Ò§Ú§ã§ä§Ö §á§â§à§Þ§Ö§ß§Ú§Ý§Ú §ã§ä§Ñ§ä§å§ã §Þ§à§Õ§å§Ý§Ñ §Ú§Ù "§°§ß§Ö§Þ§à§Ô§å?§Ö§ß§à" §å "§°§Þ§à§Ô§å?§Ö§ß§à" (§Ñ§Ü§à §ß§Ö §Ó§Ú§Õ§Ú§ä§Ö §ã§Ó§à? §Þ§à§Õ§å§Ý §ß§Ñ §Ý§Ú§ã§ä§Ú, §á§â§à§Ó§Ö§â§Ú§ä§Ö §Õ§à§Ù§Ó§à§Ý§Ö).

§®§à§Õ§å§Ý ?§Ö §ã§Ñ§Õ§Ñ §â§Ö§Ô§Ú§ã§ä§â§à§Ó§Ñ§ß §ß§Ñ §Ü§à§â§Ú§ã§ß§Ú§é§Ü§à§Þ §Ú§ß§ä§Ö§â§æ§Ö?§ã§å. §®§Ö?§å§ä§Ú§Þ, ?§à§ê §å§Ó§Ö§Ü §ß§Ú?§Ö §Ó§Ú§Õ?§Ú§Ó, ?§Ö§â ?§à§ê §å§Ó§Ö§Ü §ä§â§Ö§Ò§Ñ §Õ§Ñ §Õ§Ö§æ§Ú§ß§Ú§ê§Ö§ä§Ö §æ§å§ß§Ü§è§Ú§à§ß§Ñ§Ý§ß§à§ã§ä §Þ§à§Õ§å§Ý§Ñ. §¬§Ñ§Õ§Ñ §Õ§à§Õ§Ñ§ä§Ö §ã§Ñ§Õ§â§Ø§Ñ? §å §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ §Þ§à§Õ§å§Ý§Ñ, §à§Õ§Þ§Ñ§ç ?§Ö§ä§Ö §Ó§Ú§Õ§Ö§ä§Ú §á§â§à§Þ§Ö§ß§Ö §å Áú»¢¶Ä²© §Ü§à§â§Ú§ã§ß§Ú§é§Ü§à§Þ §Ú§ß§ä§Ö§â§æ§Ö?§ã§å §ß§Ñ§Ü§à§ß §à§ã§Ó§Ö§Ø§Ñ§Ó§Ñ?§Ñ §ã§ä§â§Ñ§ß§Ú§è§Ö.

§¯§Ñ§á§â§Ñ§Ó§Ú§ä§Ö §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ
  1. §¬§â§Ö§Ú§â§Ñ?§ä§Ö §Õ§Ñ§ä§à§ä§Ö§Ü§å Module.php §å §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ§å MyAdress.

§°§Ó§Ñ §Õ§Ñ§ä§à§ä§Ö§Ü§Ñ §Ú§Þ§á§Ý§Ö§Þ§Ö§ß§ä§Ú§â§Ñ §ß§à§Ó§å §Ü§Ý§Ñ§ã§å §®§à»å³Ü±ô±ð §Ü§à?§Ñ §á§â§à§ê§Ú§â§å?§Ö §á§à§Õ§â§Ñ§Ù§å§Þ§Ö§Ó§Ñ§ß§å §Ü§Ý§Ñ§ã§å CModule. §¬§Ý§Ñ§ã§Ñ Module ?§Ö §å§Þ§Ö§ä§ß§å§ä§Ú §ß§à§Ó§Ú §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ My Adress §å §Ô§Ý§Ñ§Ó§ß§Ú §Þ§Ö§ß§Ú.

§®§Ö§ä§à§Õ§Ñ setAction() §ã§á§Ö§è§Ú§æ§Ú§è§Ú§â§Ñ §â§Ñ§Õ?§å §Ü§à?§Ñ ?§Ö §ã§Ö §Ú§Ù§Ó§â§ê§Ú§ä§Ú §ß§Ñ§Ü§à§ß §Ü§Ý§Ú§Ü§Ñ §ß§Ñ §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ. §©§Ñ §á§à§é§Ö§ä§Ñ§Ü, §Þ§à§Ø§Ö§ä§Ö §Ü§à§â§Ú§ã§ä§Ú§ä§Ú §å§ß§Ñ§á§â§Ö§Õ §Õ§Ö§æ§Ú§ß§Ú§ã§Ñ§ß§å §Ñ§Ü§è§Ú?§å userprofile.edit, §Ü§à?§Ñ ?§Ö §à§ä§Ó§à§â§Ú§ä§Ú §ã§ä§â§Ñ§ß§Ú§è§å §¬§à§â§Ú§ã§ß§Ú§é§Ü§Ú §á§â§à§æ§Ú§Ý. §µ part III §à§Ó§à§Ô §å§á§å§ä§ã§ä§Ó§Ñ, §ß§Ñ§å§é§Ú?§Ö§ä§Ö §Ü§Ñ§Ü§à §Õ§Ñ §Ü§â§Ö§Ú§â§Ñ§ä§Ö §á§â§Ú§Ý§Ñ§Ô§à?§Ö§ß§å §â§Ñ§Õ?§å.

ui/modules/MyAddress/Module.php

<?php
       
       namespace Modules\MyAddress;
       
       use Áú»¢¶Ä²©\Core\CModule,
           APP,
           CMenuItem;
       class Module extends CModule {
       
           public function init(): void {
           APP::Component()->get('menu.main')
           ->add((new CMenuItem(_('My Address')))
           ->setAction('userprofile.edit'));
           }
       }

§®§à§Ø§Ö§ä§Ö §Õ§Ñ §Ù§Ñ§Þ§Ö§ß§Ú§ä§Ö 'userprofile.edit' §ã§Ñ §Õ§â§å§Ô§Ú§Þ §â§Ñ§Õ?§Ñ§Þ§Ñ, §ß§Ñ §á§â§Ú§Þ§Ö§â, 'charts.view' (§à§ä§Ó§Ñ§â§Ñ §á§â§Ú§Ý§Ñ§Ô§à?§Ö§ß§Ö §Ô§â§Ñ§æ§Ú§Ü§à§ß§Ö), 'problems.view' (§à§ä§Ó§Ñ§â§Ñ §®§à§ß§Ú§ä§à§â§Ú§ß§Ô ¡ú §±§â§à§Ò§Ý§Ö§Þ§Ú) §Ú§Ý§Ú 'report.status' (§à§ä§Ó§Ñ§â§Ñ §Ú§Ù§Ó§Ö§ê§ä§Ñ? §ª§ß§æ§à§â§Þ§Ñ§è§Ú?§Ö §à §ã§Ú§ã§ä§Ö§Þ§å).

  1. §°§ã§Ó§Ö§Ø§Ú§ä§Ö Áú»¢¶Ä²© §Ü§à§â§Ú§ã§ß§Ú§é§Ü§Ú §Ú§ß§ä§Ö§â§æ§Ö?§ã. §³§Ñ§Õ§Ñ §á§à§ã§ä§à?§Ú §ß§à§Ó§Ú §à§Õ§Ö?§Ñ§Ü §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ §ß§Ñ §Õ§ß§å §Ô§Ý§Ñ§Ó§ß§à§Ô §Þ§Ö§ß§Ú?§Ñ Áú»¢¶Ä²©-§Ñ. §¬§Ý§Ú§Ü§ß§Ú§ä§Ö §ß§Ñ §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ §Õ§Ñ §à§ä§Ó§à§â§Ú§ä§Ö §ã§ä§â§Ñ§ß§Ú§è§å §¬§à§â§Ú§ã§ß§Ú§é§Ü§Ú §á§â§à§æ§Ú§Ý.

Part II - §±§â§à§Þ§Ö§ß§Ñ §Ý§à§Ü§Ñ§è§Ú?§Ö §à§Õ§Ö?§Ü§Ñ §Þ§Ö§ß§Ú?§Ñ

§µ §à§Ó§à§Þ §Õ§Ö§Ý§å ?§Ö§ä§Ö §á§â§Ö§Þ§Ö§ã§ä§Ú§ä§Ú §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ §å §à§Õ§Ö?§Ñ§Ü §¯§Ñ§Õ§Ô§Ý§Ö§Õ§Ñ?§Ö §Ú §Ù§Ñ§ä§Ú§Þ §Þ§å §Õ§à§Õ§Ñ§ä§Ú §å§Ô§ß§Ö§Ø?§Ö§ß§Ú §Þ§Ö§ß§Ú. §¬§Ñ§à §â§Ö§Ù§å§Ý§ä§Ñ§ä §ä§à§Ô§Ñ, §Ü§à§â§Ú§ã§ß§Ú§è§Ú ?§Ö §Þ§à?§Ú §Õ§Ñ §á§â§Ú§ã§ä§å§á§Ö §Õ§Ó§Ö§Þ§Ñ §ã§ä§â§Ñ§ß§Ú§è§Ñ§Þ§Ñ §á§à§Õ§Þ§Ö§ß§Ú?§Ñ §Ú§Ù §à§Õ§Ö?§Ü§Ñ §Þ§Ö§ß§Ú?§Ñ §¯§Ñ§Õ§Ô§Ý§Ö§Õ§Ñ?§Ö ¡ú §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ.

  1. §°§ä§Ó§à§â§Ú§ä§Ö §Ú §å§â§Ö§Õ§Ú§ä§Ö §Õ§Ñ§ä§à§ä§Ö§Ü§å Module.php.

ui/modules/MyAddress/Module.php

<?php
       
       §Ú§Þ§Ö§ß§ã§Ü§Ú §á§â§à§ã§ä§à§â Modules\MyAdress;
       
       §Ü§à§â§Ú§ã§ä§Ú§ä§Ö Áú»¢¶Ä²©\Core\CModule,
           APP,
           CMenuItem;
       
       class Module extends CModule {
       
           public function init(): void {
               APP::Component()->get('menu.main')
                   ->findOrAdd(_('Monitoring'))
                   ->getSubmenu()
                   ->insertAfter(_('Discovery'),
                       (new CMenuItem(_('My Address')))->setAction('userprofile.edit')
                   );
                   }
       }
  1. §°§ã§Ó§Ö§Ø§Ú§ä§Ö Áú»¢¶Ä²© §Ü§à§â§Ú§ã§ß§Ú§é§Ü§Ú §Ú§ß§ä§Ö§â§æ§Ö?§ã. §±§â§à§ê§Ú§â§Ú§ä§Ö §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ §¯§Ñ§Õ§Ô§Ý§Ö§Õ§Ñ?§Ö §Ú §à§Ò§â§Ñ§ä§Ú§ä§Ö §á§Ñ§Ø?§å §Õ§Ñ §ã§Ö §à§Õ§Ö?§Ñ§Ü §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ §ã§Ñ§Õ§Ñ §ß§Ñ§Ý§Ñ§Ù§Ú §Ú§ã§á§à§Õ §à§Õ§Ö?§Ü§Ñ §°§ä§Ü§â§Ú§Ó§Ñ?§Ö.

  1. §¥§Ñ §Ò§Ú§ã§ä§Ö §Õ§à§Õ§Ñ§Ý§Ú §å§Ô§ß§Ö§Ø§Õ§Ö§ß§Ö §ã§ä§â§Ñ§ß§Ú§è§Ö §å §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ, §á§à§ß§à§Ó§à §à§ä§Ó§à§â§Ú§ä§Ö §Ú §å§â§Ö§Õ§Ú§ä§Ö §Õ§Ñ§ä§à§ä§Ö§Ü§å Module.php.

§°§Ó§Ñ? §Ü§à§â§Ñ§Ü §Ü§â§Ö§Ú§â§Ñ §Õ§Ó§Ñ §á§à§Õ§à§Õ§Ö?§Ü§Ñ:

  • §³§á§à?§ß§Ú IP §Ü§à?§Ú §Ú§Ù§Ó§â§ê§Ñ§Ó§Ñ §ß§à§Ó§å §Ñ§Ü§è§Ú?§å 'my.address' §Ü§à?§Ñ ?§Ö §Ò§Ú§ä§Ú §Õ§Ö§æ§Ú§ß§Ú§ã§Ñ§ß§Ñ §å §ã§Ý§Ö§Õ§Ö?§Ú§Þ §Ü§à§â§Ñ§è§Ú§Þ§Ñ;
  • §¬§à§â§Ú§ã§ß§Ú§é§Ü§Ú §á§â§à§æ§Ú§Ý §Ü§à?§Ú §Ú§Ù§Ó§â§ê§Ñ§Ó§Ñ §å§ß§Ñ§á§â§Ö§Õ §Õ§Ö§æ§Ú§ß§Ú§ã§Ñ§ß§å §â§Ñ§Õ?§å 'userprofile.edit' §Ù§Ñ §à§ä§Ó§Ñ§â§Ñ?§Ö §ã§ä§â§Ñ§ß§Ú§è§Ö §¬§à§â§Ú§ã§ß§Ú§é§Ü§Ú §á§â§à§æ§Ú§Ý.

§ª§Þ§Ñ?§ä§Ö §ß§Ñ §å§Þ§å §Õ§Ñ §Ù§Ñ §å§Ô§ß§Ö§Ø§Õ§Ö§ß§Ú §Þ§Ö§ß§Ú §Þ§à§â§Ñ§ä§Ö §Õ§Ñ §Ü§à§â§Ú§ã§ä§Ú§ä§Ö §Ü§Ý§Ñ§ã§å CMenu §á§à§â§Ö§Õ §Ü§Ý§Ñ§ã§Ñ §Ü§à§â§Ú§ê?§Ö§ß§Ú§ç §å §á§â§Ö§ä§ç§à§Õ§ß§Ú§Þ §Ü§à§â§Ñ§è§Ú§Þ§Ñ.

ui/modules/MyAddress/Module.php

<?php
       
       namespace Modules\MyAddress;
       
       use Áú»¢¶Ä²©\Core\CModule,
           APP,
           CMenu,
           CMenuItem;
       
       class Module extends CModule 
           {public function init(): void {
            APP::Component()->get('menu.main')
            ->findOrAdd(_('Monitoring'))
            ->getSubmenu()
            ->insertAfter(_('Discovery'),
            (new CMenuItem(_('My Address')))->setSubMenu(
            new CMenu([
            (new CMenuItem(_('External IP')))->setAction('my.address'),
            (new CMenuItem(_('User profile')))->setAction('userprofile.edit')
            ])
            )
            );
            }
       }
  1. §°§ã§Ó§Ö§Ø§Ú§ä§Ö Áú»¢¶Ä²© §Ü§à§â§Ú§ã§ß§Ú§é§Ü§Ú §Ú§ß§ä§Ö§â§æ§Ö?§ã. §°§Ò§â§Ñ§ä§Ú§ä§Ö §á§Ñ§Ø?§å §ß§Ñ §ä§à §Õ§Ñ §à§Õ§Ö?§Ñ§Ü §Þ§Ö§ß§Ú?§Ñ §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ §ã§Ñ§Õ§Ñ §ã§Ñ§Õ§â§Ø§Ú §Þ§Ö§ß§Ú §ä§â§Ö?§Ö§Ô §ß§Ú§Ó§à§Ñ §ã§Ñ §Õ§Ó§Ö §ã§ä§â§Ñ§ß§Ú§è§Ö - §³§á§à?§ß§Ñ IP §Ñ§Õ§â§Ö§ã§Ñ §Ú §¬§à§â§Ú§ã§ß§Ú§é§Ü§Ú §á§â§à§æ§Ú§Ý.

Part III - §¡§Ü§è§Ú?§Ö §Þ§à§Õ§å§Ý§Ñ

§¡§Ü§è§Ú?§Ñ ?§Ö §Ú§Þ§á§Ý§Ö§Þ§Ö§ß§ä§Ú§â§Ñ§ß§Ñ §å §Õ§Ó§Ñ §æ§Ñ?§Ý§Ñ - actions/MyAddress.php §Ú views/my.address.php. §¥§Ñ§ä§à§ä§Ö§Ü§Ñ actions/MyAddress.php §Ò§â§Ú§ß§Ö §à §Ú§Þ§á§Ý§Ö§Þ§Ö§ß§ä§Ñ§è§Ú?§Ú §á§à§ã§Ý§à§Ó§ß§Ö §Ý§à§Ô§Ú§Ü§Ö, §Õ§à§Ü ?§Ö §Õ§Ñ§ä§à§ä§Ö§Ü§Ñ views/my.address.php §à§Õ§Ô§à§Ó§à§â§ß§Ñ §Ù§Ñ §á§â§Ú§Ü§Ñ§Ù.

  1. §¬§â§Ö§Ú§â§Ñ?§ä§Ö §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ actions §å §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ§å MyAddress.

  2. §¬§â§Ö§Ú§â§Ñ?§ä§Ö §Õ§Ñ§ä§à§ä§Ö§Ü§å MyAddress.php §å §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ§å actions.

§­§à§Ô§Ú§Ü§Ñ §Ñ§Ü§è§Ú?§Ö ?§Ö §Ò§Ú§ä§Ú §Õ§Ö§æ§Ú§ß§Ú§ã§Ñ§ß§Ñ §å §Ü§Ý§Ñ§ã§Ú MyAddress. §°§Ó§Ñ §Ü§Ý§Ñ§ã§Ñ §â§Ñ§Õ?§Ö ?§Ö §Ú§Þ§á§Ý§Ö§Þ§Ö§ß§ä§Ú§â§Ñ§ä§Ú §é§Ö§ä§Ú§â§Ú §æ§å§ß§Ü§è§Ú?§Ö: init(), checkInput(), checkPermissions() §Ú doAction(). Áú»¢¶Ä²© §Ü§à§â§Ú§è§ß§Ú§é§Ü§Ú §Ú§ß§ä§Ö§â§æ§Ö?§ã §á§à§Ù§Ú§Ó§Ñ §æ§å§ß§Ü§è§Ú?§å doAction() §Ü§Ñ§Õ§Ñ §ã§Ö §Ù§Ñ§ç§ä§Ö§Ó§Ñ §Ñ§Ü§è§Ú?§Ñ. §°§Ó§Ñ §æ§å§ß§Ü§è§Ú?§Ñ ?§Ö §à§Õ§Ô§à§Ó§à§â§ß§Ñ §Ù§Ñ §á§à§ã§Ý§à§Ó§ß§å §Ý§à§Ô§Ú§Ü§å §Þ§à§Õ§å§Ý§Ñ.

§±§à§Õ§Ñ§è§Ú §Þ§à§â§Ñ?§å §Ò§Ú§ä§Ú §à§â§Ô§Ñ§ß§Ú§Ù§à§Ó§Ñ§ß§Ú §Ü§Ñ§à §Ñ§ã§à§è§Ú?§Ñ§ä§Ú§Ó§ß§Ú §ß§Ú§Ù. §¯§Ú§Ù §Þ§à§Ø§Ö §Ò§Ú§ä§Ú §Ó§Ú§ê§Ö§Õ§Ú§Þ§Ö§ß§Ù§Ú§à§ß§Ñ§Ý§Ñ§ß §Ú §Þ§à§Ø§Ö §ã§Ñ§Õ§â§Ø§Ñ§ä§Ú §ã§Ó§Ö §á§à§Õ§Ñ§ä§Ü§Ö §Ü§à?§Ö §à§é§Ö§Ü§å?§Ö §á§â§Ú§Ü§Ñ§Ù.

ui/modules/MyAddress/actions/MyAddress.php

<?php
       
       namespace Modules\MyAddress\Actions;
       
       use CController,
           CControllerResponseData;
       
       class MyAddress extends CController {
       
          public function init(): void {
          $this->disableCsrfValidation();}
       
           protected function checkInput(): bool {
           return true;
           }
       
           protected function checkPermissions(): bool {
           return true;
           }
       
           protected function doAction(): void {
           $data = ['my-ip' => file_get_contents("https://api.seeip.org")];
           $response = new CControllerResponseData($data);
           $this->setResponse($response);
           }
       }
  1. §¬§â§Ö§Ú§â§Ñ?§ä§Ö §ß§à§Ó§Ú §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ views §å §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ§å MyAddress.

  2. §¬§â§Ö§Ú§â§Ñ?§ä§Ö §Õ§Ñ§ä§à§ä§Ö§Ü§å my.address.php §å §Õ§Ú§â§Ö§Ü§ä§à§â§Ú?§å§Þ§å views §Ú §Õ§Ö§æ§Ú§ß§Ú§ê§Ú§ä§Ö §á§â§Ú§Ü§Ñ§Ù §Þ§à§Õ§å§Ý§Ñ.

§ª§Þ§Ñ?§ä§Ö §ß§Ñ §å§Þ§å §Õ§Ñ ?§Ö §á§â§à§Þ§Ö§ß?§Ú§Ó§Ñ $data §Õ§à§ã§ä§å§á§ß§Ñ §å §á§â§Ú§Ü§Ñ§Ù§å §Ò§Ö§Ù §á§à§ã§Ö§Ò§ß§à§Ô §Õ§Ö§æ§Ú§ß§Ú§ã§Ñ?§Ñ. §°§Ü§Ó§Ú§â §Ñ§å§ä§à§Þ§Ñ§ä§ã§Ü§Ú §á§â§à§ã§Ý§Ö?§å?§Ö §Ñ§ã§à§è§Ú?§Ñ§ä§Ú§Ó§ß§Ú §ß§Ú§Ù §å §á§â§Ú§Ü§Ñ§Ù.

ui/modules/MyAddress/views/my.address.php

<?php
       
       (new CHtmlPage())
             ->setTitle(_('The HTML Title of My Address Page'))
             ->addItem(new CDiv($data['my-ip']))
             ->show();
  1. §²§Ñ§Õ?§Ñ §Þ§à§Õ§å§Ý§Ñ §Þ§à§â§Ñ §Ò§Ú§ä§Ú §â§Ö§Ô§Ú§ã§ä§â§à§Ó§Ñ§ß§Ñ §å §Õ§Ñ§ä§à§ä§Ö§è§Ú manifest.json. §°§ä§Ó§à§â§Ú§ä§Ö manifest.json §Ú §Õ§à§Õ§Ñ?§ä§Ö §ß§à§Ó§Ú §à§Ò?§Ö§Ü§Ñ§ä "actions" §Ü§à?§Ú §ã§Ñ§Õ§â§Ø§Ú:
  • §Ñ§Ü§è§Ú§à§ß§Ú §Ü?§å§é §ã§Ñ §Ú§Þ§Ö§ß§à§Þ §â§Ñ§Õ?§Ö §ß§Ñ§á§Ú§ã§Ñ§ß§Ú§Þ §Þ§Ñ§Ý§Ú§Þ §ã§Ý§à§Ó§Ú§Þ§Ñ (§Ñ-z) §Ú §â§Ö§é§Ú§Þ§Ñ §â§Ñ§Ù§Õ§Ó§à?§Ö§ß§Ú§Þ §ä§Ñ§é§Ü§Ñ§Þ§Ñ (§ß§Ñ §á§â§Ú§Þ§Ö§â, my.address);
  • §ß§Ñ§Ù§Ú§Ó §Ü§Ý§Ñ§ã§Ö §Ñ§Ü§è§Ú?§Ö (§®²â´¡»å»å°ù±ð²õ²õ) §Ü§Ñ§à §Ó§â§Ö§Õ§ß§à§ã§ä §Ù§Ñ §Ü?§å§é class §à§Ò?§Ö§Ü§ä§Ñ my.address;
  • §Ú§Þ§Ö §á§â§Ú§Ü§Ñ§Ù§Ñ §Ñ§Ü§è§Ú?§Ö (my.address) §Ü§Ñ§à §Ó§â§Ö§Õ§ß§à§ã§ä §Ù§Ñ §Ü?§å§é view §à§Ò?§Ö§Ü§ä§Ñ my.address.

ui/modules/MyAddress/manifest.json

{
            "manifest_version": 2.0,
            "id": "my-address",
            "name": "My IP Address",
            "version": "1.0",
            "namespace": "MyAddress",
            "description": "My External IP Address.",
            "actions": {
            "my.address": {
            "class": "MyAddress",
            "view": "my.address"
            }
            }
       }
  1. §°§ã§Ó§Ö§Ø§Ú§ä§Ö Áú»¢¶Ä²© §Ü§à§â§Ú§ã§ß§Ú§é§Ü§Ú §Ú§ß§ä§Ö§â§æ§Ö?§ã. §¬§Ý§Ú§Ü§ß§Ú§ä§Ö §ß§Ñ §®§à?§Ñ §Ñ§Õ§â§Ö§ã§Ñ ¡ú §¦§Ü§ã§ä§Ö§â§ß§Ú IP §Õ§Ñ §Ò§Ú§ã§ä§Ö §Ó§Ú§Õ§Ö§Ý§Ú IP §Ñ§Õ§â§Ö§ã§å §ã§Ó§à§Ô §â§Ñ§é§å§ß§Ñ§â§Ñ.