MODx рдХреНрд░рд╛рдВрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рдПрдБ

рдЫрд╡рд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ:
  1. MODx рдХреНрд░рд╛рдВрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВред
  2. рдПрдХреНрд╕рдПрдордбреАрдУ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдПрдордПрд▓ рд╕реНрдХреАрдорд╛ рдФрд░ php рд╡рд░реНрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреАрдврд╝реАред
  3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред


рдПрд╡реЛрд▓реНрдпреВрд╢рди рд╕реЗ рд░реЗрд╡реЛрд▓реНрдпреВрд╢рди рдХреА рдУрд░ рдмрдврд╝рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХреНрд╕рдкреАрдбреАрдУ рдЖрдИрдПрдордПрдЪрдУ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдпрд╣ рд╕рд░рд▓ рдерд╛: phpMyAdmin рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдВрд╕рдкреЗрд╢рд┐рдпреЛрдВ рдореЗрдВ рдЪрдврд╝ рдЧрдпрд╛, рдПрдХ рдкреНрд▓реЗрдЯ рдмрдирд╛рдИ, рдФрд░ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде $ SQL modx-> db рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢реБрджреНрдз SQL рдХреНрд╡реЗрд░реА рднреЗрдЬрдХрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ $ рдореЛрдбреЗрдХреНрд╕ рдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдПрдХ рдкреВрд░реА рдмреВрдВрдж рдХреЗ, рдЖрджрд┐ред XPDO рдФрд░ MODx рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ (рд╕рдЯреАрдХ $ modx), рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ рд╣реИ ред
рдореИрдВ рдореЙрдбреЗрдХреНрд╕ рдХреНрд░рд╛рдВрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдмрд╛рдзрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рд╕рдВрдкреВрд░реНрдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдиреАрдЪреЗ рддреАрди рд╢рдмреНрджреЛрдВ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
  1. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ phpMyAdmin (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдЙрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
  2. рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЖрд╡рд╢реНрдпрдХ xpdo рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ
  3. $ Modx-> addPackage () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЕрдкрдиреА рдирдИ рдХрдХреНрд╖рд╛ рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ $ modx-> getObject (), $ modx-> getCollection (), рдЖрджрд┐ред


рддреЛ, рдХреЛрдб рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╕реНрд░реЛрдд рдпрд╣рд╛рдВ ):

<?php



/*******************************************************/

/* */

/*******************************************************/


// . $modx->addPackage()
<br>
$obj = 'program' ;


/*
. , .
, xPDO ,
, .
*/
<br>
$tablePrefix= 'modx_program_' ;


// , XML-

// $modx->addPackage();
<br>
$Path = dirname(__FILE__). '/model/' ;


// -
<br>
$Schema = $Path. '/' .$obj. '.mysql.schema.xml' ;


/*******************************************************/


<br>
// -
<br>
require_once dirname(dirname(dirname(__FILE__))). '/core/config/config.inc.php' ;


// MODx
<br>
include_once MODX_CORE_PATH . 'model/modx/modx.class.php' ;


// MODx
<br>
$modx= new modX();


// ,
<br>
// $modx->initialize('mgr');


//

//
<br>
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
<br>
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML' );


// !!! !
<br>
// -
<br>
$modx->addPackage( 'transport.modPackageBuilder' , '' , false , true );


// (MySQL / MsSQL ..)
<br>
$manager = $modx->getManager();


// -
<br>
$generator = $manager->getGenerator();



// -XML
<br>
// /xpdo/om/mysql/xpdogenerator.class.php

<br>
// public function writeSchema($schemaFile, $package= '', $baseClass= '', $tablePrefix= '', $restrictPrefix= false)
<br>
// $tablePrefix - , , .

<br>
// $restrictPrefix - true,

<br>
$xml= $generator->writeSchema($Schema, $obj, 'xPDOObject' , $tablePrefix ,$restrictPrefix= true );


// (php) xml
<br>
$generator->parseSchema($Schema, $Path);

<br>
<br>
print "<br /><br />" ;




рд╣рдо рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ MODx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрде рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд╣рд╛рдБ рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ xml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ php рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ, рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ, рддреЛ рджреВрд╕рд░реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдЕрдкрдиреА рдирдИ рдХрдХреНрд╖рд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрдм рдЖрдк рдЕрдкрдиреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХреНрд╕рдПрдордбреАрдУ рдХреЗ рдПрдХреНрд╕рдПрдордбреАрдУ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рддрдВрддреНрд░ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА рдЬрдирд░реЗрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╡рд╕реНрддреБрдПрдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдкрдирд╛ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ, рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рдерд╛ ...

1. рдкреИрдХреЗрдЬ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛



1.1 рдПрдХ рдореЗрдЬ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, XML рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдореБрдЦреНрдп рдЦрдВрдб рд╣реИ:

< model package ="testtbl" baseClass ="xPDOObject" platform ="mysql" defaultEngine ="MyISAM" version ="1.1" >
< object class ="Tbl" table ="tbl" extends ="xPDOObject" >



рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬрд╝ рдЬреЛ рд╣рдореЗрдВ рдпрд╣рд╛рдБ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╣реИ:
1ред
< model package="testtbl"
рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдореВрд▓реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕ рдкреИрдХреЗрдЬ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ testtbl рд╣реИред рд╣рдо рдкреИрдХреЗрдЬ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╣реЗрдВрдЧреЗ:

$modx->addPackage( $package, $path, $prefix);
// !!! addPackage , , .


рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдзреНрдпрд╛рди рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
$ рдкреИрдХреЗрдЬ ред рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдоред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╕ testtbl
$ рдкрде ред рдкреИрдХреЗрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкрде (рдЬрд┐рд╕рдореЗрдВ рдЙрд╕ XML рдлрд╝рд╛рдЗрд▓ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА PHP рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ)
$ рдЙрдкрд╕рд░реНрдЧ ред рдпрджрд┐ рд╕реНрдХреАрдо рдмрдирд╛рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЙрдкрд╕рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдХ рдФрд░ рдЫреЛрдЯреА рдЪрд╛рд▓ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╕реВрддреНрд░: $ рдЙрдкрд╕рд░реНрдЧ = $ рдлреБрд▓рдЯреЗрдмрд▓рдирд╛рдо - $ рддрд╛рд▓рд┐рдХрд╛рдирд╛рдо;
рдпрд╣рд╛рдБ $ fullTableName рдЙрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдПрдХреНрд╕реЗрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ,
$ tableName - рд╣рдорд╛рд░реЗ XML рдлрд╝рд╛рдЗрд▓ рдХреЗ <рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреИрдЧ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди

рд╣рдо рдЕрдиреБрд░реЛрдз рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ:

$result = $modx->getCollection( 'Tbl' );
foreach ($result as $row){
print тАЬ<br />Next:тАЭ. $row-> get ('columnName');
}


1.2 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдПрдВ



private static function testCreateRows(){

$pkg = 'testtbl' ;


$modx->addPackage( 'testtbl' , $Path , 'modx_kl_test' )) ;

$row = $modx->newObject( 'Tbl' );
$row->fromArray(array(
'id' => 5
));
$row->save();

return ;
}



рд▓рдЧрддрд╛ рддреЛ рд╕рдм рд╣реИред рдпрджрд┐ рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреВрдЫреЗрдВред

Source: https://habr.com/ru/post/In123072/


All Articles