github.com/rpdict/ponzu@v0.10.1-0.20190226054626-477f29d6bf5e/docs/build/CLI/Generating-References/index.html (about) 1 2 <!DOCTYPE html> 3 <html lang="en" class="no-js"> 4 <head> 5 6 <meta charset="utf-8"> 7 <meta name="viewport" content="width=device-width,initial-scale=1"> 8 9 10 11 12 <link rel="shortcut icon" href="../../assets/images/favicon.png"> 13 14 <meta name="generator" content="mkdocs-0.16.3, mkdocs-material-1.6.1"> 15 16 17 18 <title>How to Generate References using Ponzu CLI</title> 19 20 21 22 <script src="../../assets/javascripts/modernizr-56ade86843.js"></script> 23 24 25 <link rel="stylesheet" href="../../assets/stylesheets/application-4d0d3f2fbf.css"> 26 27 <link rel="stylesheet" href="../../assets/stylesheets/application-f78e5cb881.palette.css"> 28 29 30 31 32 33 34 35 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> 36 <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> 37 38 <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> 39 40 41 42 </head> 43 44 45 46 47 <body data-md-color-primary="grey" data-md-color-accent="light-blue"> 48 49 <svg class="md-svg"> 50 <defs> 51 52 53 <svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg> 54 55 </defs> 56 </svg> 57 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer"> 58 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="search"> 59 <label class="md-overlay" data-md-component="overlay" for="drawer"></label> 60 61 <header class="md-header" data-md-component="header"> 62 <nav class="md-header-nav md-grid"> 63 <div class="md-flex"> 64 <div class="md-flex__cell md-flex__cell--shrink"> 65 66 <a href="../.." title="Ponzu" class="md-logo md-header-nav__button"> 67 <img src="../../images/logo.png" width="24" height="24"> 68 </a> 69 70 </div> 71 <div class="md-flex__cell md-flex__cell--shrink"> 72 <label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> 73 </div> 74 <div class="md-flex__cell md-flex__cell--stretch"> 75 <span class="md-flex__ellipsis md-header-nav__title"> 76 77 78 79 <span class="md-header-nav__parent"> 80 CLI 81 </span> 82 83 84 Generating References 85 86 </span> 87 </div> 88 <div class="md-flex__cell md-flex__cell--shrink"> 89 90 <label class="md-icon md-icon--search md-header-nav__button" for="search"></label> 91 92 <div class="md-search" data-md-component="search"> 93 <label class="md-search__overlay" for="search"></label> 94 <div class="md-search__inner"> 95 <form class="md-search__form" name="search"> 96 <input type="text" class="md-search__input" name="query" required placeholder="Search" accesskey="s" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query"> 97 <label class="md-icon md-search__icon" for="search"></label> 98 <button type="reset" class="md-icon md-search__icon" data-md-component="reset">close</button> 99 </form> 100 <div class="md-search__output"> 101 <div class="md-search__scrollwrap" data-md-scrollfix> 102 <div class="md-search-result" data-md-component="result"> 103 <div class="md-search-result__meta" data-md-lang-result-none="No matching documents" data-md-lang-result-one="1 matching document" data-md-lang-result-other="# matching documents"> 104 Type to start searching 105 </div> 106 <ol class="md-search-result__list"></ol> 107 </div> 108 </div> 109 </div> 110 </div> 111 </div> 112 113 </div> 114 <div class="md-flex__cell md-flex__cell--shrink"> 115 <div class="md-header-nav__source"> 116 117 118 119 120 121 122 123 <a href="https://github.com/rpdict/ponzu" title="Go to repository" class="md-source" data-md-source="github"> 124 125 <div class="md-source__icon"> 126 <svg viewBox="0 0 24 24" width="24" height="24"> 127 <use xlink:href="#github" width="24" height="24"></use> 128 </svg> 129 </div> 130 131 <div class="md-source__repository"> 132 ponzu-cms/ponzu 133 </div> 134 </a> 135 136 137 </div> 138 </div> 139 </div> 140 </nav> 141 </header> 142 143 <div class="md-container"> 144 145 146 <main class="md-main"> 147 <div class="md-main__inner md-grid" data-md-component="container"> 148 149 150 <div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> 151 <div class="md-sidebar__scrollwrap"> 152 <div class="md-sidebar__inner"> 153 <nav class="md-nav md-nav--primary" data-md-level="0"> 154 <label class="md-nav__title md-nav__title--site" for="drawer"> 155 156 <i class="md-logo md-nav__button"> 157 <img src="../../images/logo.png"> 158 </i> 159 160 Ponzu 161 </label> 162 163 <div class="md-nav__source"> 164 165 166 167 168 169 170 <a href="https://github.com/rpdict/ponzu" title="Go to repository" class="md-source" data-md-source="github"> 171 172 <div class="md-source__icon"> 173 <svg viewBox="0 0 24 24" width="24" height="24"> 174 <use xlink:href="#github" width="24" height="24"></use> 175 </svg> 176 </div> 177 178 <div class="md-source__repository"> 179 ponzu-cms/ponzu 180 </div> 181 </a> 182 183 </div> 184 185 <ul class="md-nav__list" data-md-scrollfix> 186 187 188 189 190 191 192 <li class="md-nav__item"> 193 <a href="../.." title="Home" class="md-nav__link"> 194 Home 195 </a> 196 </li> 197 198 199 200 201 202 203 204 205 206 <li class="md-nav__item md-nav__item--active md-nav__item--nested"> 207 208 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2" checked> 209 210 <label class="md-nav__link" for="nav-2"> 211 CLI 212 </label> 213 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 214 <label class="md-nav__title" for="nav-2"> 215 CLI 216 </label> 217 <ul class="md-nav__list" data-md-scrollfix> 218 219 220 221 222 223 224 225 <li class="md-nav__item"> 226 <a href="../General-Usage/" title="General Usage" class="md-nav__link"> 227 General Usage 228 </a> 229 </li> 230 231 232 233 234 235 236 237 238 239 <li class="md-nav__item md-nav__item--active"> 240 241 <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> 242 243 244 <label class="md-nav__link md-nav__link--active" for="toc"> 245 Generating References 246 </label> 247 248 <a href="./" title="Generating References" class="md-nav__link md-nav__link--active"> 249 Generating References 250 </a> 251 252 253 <nav class="md-nav md-nav--secondary"> 254 255 256 257 <label class="md-nav__title" for="toc">Table of contents</label> 258 <ul class="md-nav__list" data-md-scrollfix> 259 260 <li class="md-nav__item"> 261 <a href="#syntax" title="Syntax" class="md-nav__link"> 262 Syntax 263 </a> 264 265 <nav class="md-nav"> 266 <ul class="md-nav__list"> 267 268 <li class="md-nav__item"> 269 <a href="#_1" title="@" class="md-nav__link"> 270 @ 271 </a> 272 273 </li> 274 275 <li class="md-nav__item"> 276 <a href="#_2" title="[]" class="md-nav__link"> 277 [] 278 </a> 279 280 </li> 281 282 <li class="md-nav__item"> 283 <a href="#arg1arg2argn" title=",arg1,arg2,argN" class="md-nav__link"> 284 ,arg1,arg2,argN 285 </a> 286 287 </li> 288 289 <li class="md-nav__item"> 290 <a href="#example" title="Example" class="md-nav__link"> 291 Example 292 </a> 293 294 </li> 295 296 </ul> 297 </nav> 298 299 </li> 300 301 302 303 </ul> 304 305 </nav> 306 307 </li> 308 309 310 </ul> 311 </nav> 312 </li> 313 314 315 316 317 318 319 320 <li class="md-nav__item md-nav__item--nested"> 321 322 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3"> 323 324 <label class="md-nav__link" for="nav-3"> 325 Content 326 </label> 327 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 328 <label class="md-nav__title" for="nav-3"> 329 Content 330 </label> 331 <ul class="md-nav__list" data-md-scrollfix> 332 333 334 335 336 337 338 339 <li class="md-nav__item"> 340 <a href="../../Content/An-Overview/" title="An Overview" class="md-nav__link"> 341 An Overview 342 </a> 343 </li> 344 345 346 347 348 349 350 351 <li class="md-nav__item"> 352 <a href="../../Content/Extending-Content/" title="Extending Content" class="md-nav__link"> 353 Extending Content 354 </a> 355 </li> 356 357 358 </ul> 359 </nav> 360 </li> 361 362 363 364 365 366 367 368 <li class="md-nav__item md-nav__item--nested"> 369 370 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4"> 371 372 <label class="md-nav__link" for="nav-4"> 373 Form Fields 374 </label> 375 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 376 <label class="md-nav__title" for="nav-4"> 377 Form Fields 378 </label> 379 <ul class="md-nav__list" data-md-scrollfix> 380 381 382 383 384 385 386 387 <li class="md-nav__item"> 388 <a href="../../Form-Fields/HTML-Inputs/" title="HTML Inputs" class="md-nav__link"> 389 HTML Inputs 390 </a> 391 </li> 392 393 394 </ul> 395 </nav> 396 </li> 397 398 399 400 401 402 403 404 <li class="md-nav__item md-nav__item--nested"> 405 406 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5"> 407 408 <label class="md-nav__link" for="nav-5"> 409 HTTP APIs 410 </label> 411 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 412 <label class="md-nav__title" for="nav-5"> 413 HTTP APIs 414 </label> 415 <ul class="md-nav__list" data-md-scrollfix> 416 417 418 419 420 421 422 423 <li class="md-nav__item"> 424 <a href="../../HTTP-APIs/Content/" title="Content" class="md-nav__link"> 425 Content 426 </a> 427 </li> 428 429 430 431 432 433 434 435 <li class="md-nav__item"> 436 <a href="../../HTTP-APIs/File-Metadata/" title="File Metadata" class="md-nav__link"> 437 File Metadata 438 </a> 439 </li> 440 441 442 443 444 445 446 447 <li class="md-nav__item"> 448 <a href="../../HTTP-APIs/Search/" title="Search" class="md-nav__link"> 449 Search 450 </a> 451 </li> 452 453 454 </ul> 455 </nav> 456 </li> 457 458 459 460 461 462 463 464 <li class="md-nav__item md-nav__item--nested"> 465 466 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"> 467 468 <label class="md-nav__link" for="nav-6"> 469 Interfaces 470 </label> 471 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 472 <label class="md-nav__title" for="nav-6"> 473 Interfaces 474 </label> 475 <ul class="md-nav__list" data-md-scrollfix> 476 477 478 479 480 481 482 483 <li class="md-nav__item"> 484 <a href="../../Interfaces/API/" title="API" class="md-nav__link"> 485 API 486 </a> 487 </li> 488 489 490 491 492 493 494 495 <li class="md-nav__item"> 496 <a href="../../Interfaces/Editor/" title="Editor" class="md-nav__link"> 497 Editor 498 </a> 499 </li> 500 501 502 503 504 505 506 507 <li class="md-nav__item"> 508 <a href="../../Interfaces/Format/" title="Format" class="md-nav__link"> 509 Format 510 </a> 511 </li> 512 513 514 515 516 517 518 519 <li class="md-nav__item"> 520 <a href="../../Interfaces/Item/" title="Item" class="md-nav__link"> 521 Item 522 </a> 523 </li> 524 525 526 527 528 529 530 531 <li class="md-nav__item"> 532 <a href="../../Interfaces/Search/" title="Search" class="md-nav__link"> 533 Search 534 </a> 535 </li> 536 537 538 </ul> 539 </nav> 540 </li> 541 542 543 544 545 546 547 548 <li class="md-nav__item md-nav__item--nested"> 549 550 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"> 551 552 <label class="md-nav__link" for="nav-7"> 553 Ponzu Addons 554 </label> 555 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 556 <label class="md-nav__title" for="nav-7"> 557 Ponzu Addons 558 </label> 559 <ul class="md-nav__list" data-md-scrollfix> 560 561 562 563 564 565 566 567 <li class="md-nav__item"> 568 <a href="../../Ponzu-Addons/Creating-Addons/" title="Creating Addons" class="md-nav__link"> 569 Creating Addons 570 </a> 571 </li> 572 573 574 575 576 577 578 579 <li class="md-nav__item"> 580 <a href="../../Ponzu-Addons/Using-Addons/" title="Using Addons" class="md-nav__link"> 581 Using Addons 582 </a> 583 </li> 584 585 586 </ul> 587 </nav> 588 </li> 589 590 591 592 593 594 595 596 <li class="md-nav__item md-nav__item--nested"> 597 598 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"> 599 600 <label class="md-nav__link" for="nav-8"> 601 Quickstart 602 </label> 603 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 604 <label class="md-nav__title" for="nav-8"> 605 Quickstart 606 </label> 607 <ul class="md-nav__list" data-md-scrollfix> 608 609 610 611 612 613 614 615 <li class="md-nav__item"> 616 <a href="../../Quickstart/Overview/" title="Overview" class="md-nav__link"> 617 Overview 618 </a> 619 </li> 620 621 622 </ul> 623 </nav> 624 </li> 625 626 627 628 629 630 631 632 <li class="md-nav__item md-nav__item--nested"> 633 634 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"> 635 636 <label class="md-nav__link" for="nav-9"> 637 References 638 </label> 639 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 640 <label class="md-nav__title" for="nav-9"> 641 References 642 </label> 643 <ul class="md-nav__list" data-md-scrollfix> 644 645 646 647 648 649 650 651 <li class="md-nav__item"> 652 <a href="../../References/Overview/" title="Overview" class="md-nav__link"> 653 Overview 654 </a> 655 </li> 656 657 658 </ul> 659 </nav> 660 </li> 661 662 663 664 665 666 667 668 <li class="md-nav__item md-nav__item--nested"> 669 670 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10"> 671 672 <label class="md-nav__link" for="nav-10"> 673 Running Backups 674 </label> 675 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 676 <label class="md-nav__title" for="nav-10"> 677 Running Backups 678 </label> 679 <ul class="md-nav__list" data-md-scrollfix> 680 681 682 683 684 685 686 687 <li class="md-nav__item"> 688 <a href="../../Running-Backups/Backups/" title="Backups" class="md-nav__link"> 689 Backups 690 </a> 691 </li> 692 693 694 </ul> 695 </nav> 696 </li> 697 698 699 700 701 702 703 704 <li class="md-nav__item md-nav__item--nested"> 705 706 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-11" type="checkbox" id="nav-11"> 707 708 <label class="md-nav__link" for="nav-11"> 709 System Configuration 710 </label> 711 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 712 <label class="md-nav__title" for="nav-11"> 713 System Configuration 714 </label> 715 <ul class="md-nav__list" data-md-scrollfix> 716 717 718 719 720 721 722 723 <li class="md-nav__item"> 724 <a href="../../System-Configuration/Settings/" title="Settings" class="md-nav__link"> 725 Settings 726 </a> 727 </li> 728 729 730 </ul> 731 </nav> 732 </li> 733 734 735 736 737 738 739 740 <li class="md-nav__item md-nav__item--nested"> 741 742 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-12" type="checkbox" id="nav-12"> 743 744 <label class="md-nav__link" for="nav-12"> 745 System Deployment 746 </label> 747 <nav class="md-nav" data-md-component="collapsible" data-md-level="1"> 748 <label class="md-nav__title" for="nav-12"> 749 System Deployment 750 </label> 751 <ul class="md-nav__list" data-md-scrollfix> 752 753 754 755 756 757 758 759 <li class="md-nav__item"> 760 <a href="../../System-Deployment/Docker/" title="Docker" class="md-nav__link"> 761 Docker 762 </a> 763 </li> 764 765 766 767 768 769 770 771 <li class="md-nav__item"> 772 <a href="../../System-Deployment/SysV-Style/" title="SysV Style" class="md-nav__link"> 773 SysV Style 774 </a> 775 </li> 776 777 778 </ul> 779 </nav> 780 </li> 781 782 783 </ul> 784 </nav> 785 </div> 786 </div> 787 </div> 788 789 790 <div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> 791 <div class="md-sidebar__scrollwrap"> 792 <div class="md-sidebar__inner"> 793 794 <nav class="md-nav md-nav--secondary"> 795 796 797 798 <label class="md-nav__title" for="toc">Table of contents</label> 799 <ul class="md-nav__list" data-md-scrollfix> 800 801 <li class="md-nav__item"> 802 <a href="#syntax" title="Syntax" class="md-nav__link"> 803 Syntax 804 </a> 805 806 <nav class="md-nav"> 807 <ul class="md-nav__list"> 808 809 <li class="md-nav__item"> 810 <a href="#_1" title="@" class="md-nav__link"> 811 @ 812 </a> 813 814 </li> 815 816 <li class="md-nav__item"> 817 <a href="#_2" title="[]" class="md-nav__link"> 818 [] 819 </a> 820 821 </li> 822 823 <li class="md-nav__item"> 824 <a href="#arg1arg2argn" title=",arg1,arg2,argN" class="md-nav__link"> 825 ,arg1,arg2,argN 826 </a> 827 828 </li> 829 830 <li class="md-nav__item"> 831 <a href="#example" title="Example" class="md-nav__link"> 832 Example 833 </a> 834 835 </li> 836 837 </ul> 838 </nav> 839 840 </li> 841 842 843 844 </ul> 845 846 </nav> 847 </div> 848 </div> 849 </div> 850 851 852 <div class="md-content"> 853 <article class="md-content__inner md-typeset"> 854 855 856 857 <h1>Generating References</h1> 858 859 <p>In Ponzu, users make connections between Content types using references. In order 860 to use the CLI to generate these references, a slightly different syntax is required. 861 In all cases, the Content type you wish to reference does not need to exist prior 862 to the "parent" type referencing it at generate-time, but in the following examples, 863 the referenced "child" type will be shown before the parent type for clarity.</p> 864 <h2 id="syntax">Syntax<a class="headerlink" href="#syntax" title="Permanent link">¶</a></h2> 865 <h3 id="_1">@<a class="headerlink" href="#_1" title="Permanent link">¶</a></h3> 866 <p>The <strong>@</strong> symbol is used to declare that the following name is a reference. The 867 CLI will take care to parse the name and treat it as a Content type to which the 868 current type refers.</p> 869 <h3 id="_2">[]<a class="headerlink" href="#_2" title="Permanent link">¶</a></h3> 870 <p>The <code>[]</code>, which if used, is always in front of the <strong>@</strong> symbol. It signifies 871 that the reference type is a slice or a collection of references. When <code>[]</code> 872 is used, the CLI will automatically generate a <code>reference.SelectRepeater()</code> view 873 for you.</p> 874 <h3 id="arg1arg2argn">,arg1,arg2,argN<a class="headerlink" href="#arg1arg2argn" title="Permanent link">¶</a></h3> 875 <p>Immediately following the reference name (after the @ symbol), users may optionally 876 pass arguments to specify how the reference is displayed in the parent type's 877 editor. References are included in the parent types editor as a dropdown menu, with 878 each possible reference as an option. These arguments define what goes inside the 879 <code><option></option></code> text node, as would be seen by an Admin.</p> 880 <p>The arguments must be valid JSON struct tag names from the reference type's fields. 881 Notice in the example below, the <code>title</code> and <code>price</code> are formatted exactly as they 882 were in the generate command for the <code>product</code> type.</p> 883 <hr /> 884 <h3 id="_3"><a class="headerlink" href="#_3" title="Permanent link">¶</a></h3> 885 <h5 id="example">Example<a class="headerlink" href="#example" title="Permanent link">¶</a></h5> 886 <div class="codehilite"><pre><span></span>$ ponzu gen content product title:string price:int description:string:textarea 887 $ ponzu gen content catalog year:int products:<span class="s2">"[]@product"</span>,title,price 888 </pre></div> 889 890 891 <p>The commands above output the following. For demonstration, we will omit the full 892 code generated for the <code>Product</code>, since the reference is in the <code>Catalog</code> type.</p> 893 <div class="codehilite"><pre><span></span><span class="c1">// content/product.go</span> 894 <span class="kn">package</span> <span class="nx">content</span> 895 <span class="o">...</span> 896 897 <span class="kd">type</span> <span class="nx">Product</span> <span class="kd">struct</span> <span class="p">{</span> 898 <span class="nx">item</span><span class="p">.</span><span class="nx">Item</span> 899 900 <span class="nx">Title</span> <span class="kt">string</span> <span class="s">`json:"title"`</span> 901 <span class="nx">Price</span> <span class="kt">int</span> <span class="s">`json:"price"`</span> 902 <span class="nx">Description</span> <span class="kt">string</span> <span class="s">`json:"description"`</span> 903 <span class="p">}</span> 904 905 <span class="o">...</span> 906 </pre></div> 907 908 909 <div class="codehilite"><pre><span></span><span class="kn">package</span> <span class="nx">content</span> 910 911 <span class="kn">import</span> <span class="p">(</span> 912 <span class="s">"fmt"</span> 913 914 <span class="s">"github.com/bosssauce/reference"</span> 915 916 <span class="s">"github.com/rpdict/ponzu/management/editor"</span> 917 <span class="s">"github.com/rpdict/ponzu/system/item"</span> 918 <span class="p">)</span> 919 920 <span class="kd">type</span> <span class="nx">Catalog</span> <span class="kd">struct</span> <span class="p">{</span> 921 <span class="nx">item</span><span class="p">.</span><span class="nx">Item</span> 922 923 <span class="nx">Year</span> <span class="kt">int</span> <span class="s">`json:"year"`</span> 924 <span class="c1">// all references are stored as []string or string types</span> 925 <span class="nx">Products</span> <span class="p">[]</span><span class="kt">string</span> <span class="s">`json:"products"`</span> 926 <span class="p">}</span> 927 928 <span class="kd">func</span> <span class="p">(</span><span class="nx">c</span> <span class="o">*</span><span class="nx">Catalog</span><span class="p">)</span> <span class="nx">MarshalEditor</span><span class="p">()</span> <span class="p">([]</span><span class="kt">byte</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> 929 <span class="nx">view</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">editor</span><span class="p">.</span><span class="nx">Form</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span> 930 <span class="nx">editor</span><span class="p">.</span><span class="nx">Field</span><span class="p">{</span> 931 <span class="nx">View</span><span class="p">:</span> <span class="nx">editor</span><span class="p">.</span><span class="nx">Input</span><span class="p">(</span><span class="s">"Year"</span><span class="p">,</span> <span class="nx">c</span><span class="p">,</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span> 932 <span class="s">"label"</span><span class="p">:</span> <span class="s">"Year"</span><span class="p">,</span> 933 <span class="s">"type"</span><span class="p">:</span> <span class="s">"text"</span><span class="p">,</span> 934 <span class="s">"placeholder"</span><span class="p">:</span> <span class="s">"Enter the Year here"</span><span class="p">,</span> 935 <span class="p">}),</span> 936 <span class="p">},</span> 937 <span class="nx">editor</span><span class="p">.</span><span class="nx">Field</span><span class="p">{</span> 938 <span class="c1">// reference.SelectRepeater since []@product was used</span> 939 <span class="nx">View</span><span class="p">:</span> <span class="nx">reference</span><span class="p">.</span><span class="nx">SelectRepeater</span><span class="p">(</span><span class="s">"Products"</span><span class="p">,</span> <span class="nx">c</span><span class="p">,</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span> 940 <span class="s">"label"</span><span class="p">:</span> <span class="s">"Products"</span><span class="p">,</span> 941 <span class="p">},</span> 942 <span class="s">"Product"</span><span class="p">,</span> <span class="c1">// generated from @product</span> 943 <span class="s">`{{ .title }} {{ .price }} `</span><span class="p">,</span> <span class="c1">// generated from ,title,price args</span> 944 <span class="p">),</span> 945 <span class="p">},</span> 946 <span class="p">)</span> 947 948 <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> 949 <span class="k">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Errorf</span><span class="p">(</span><span class="s">"Failed to render Catalog editor view: %s"</span><span class="p">,</span> <span class="nx">err</span><span class="p">.</span><span class="nx">Error</span><span class="p">())</span> 950 <span class="p">}</span> 951 952 <span class="k">return</span> <span class="nx">view</span><span class="p">,</span> <span class="kc">nil</span> 953 <span class="p">}</span> 954 955 <span class="kd">func</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> 956 <span class="nx">item</span><span class="p">.</span><span class="nx">Types</span><span class="p">[</span><span class="s">"Catalog"</span><span class="p">]</span> <span class="p">=</span> <span class="kd">func</span><span class="p">()</span> <span class="kd">interface</span><span class="p">{}</span> <span class="p">{</span> <span class="k">return</span> <span class="nb">new</span><span class="p">(</span><span class="nx">Catalog</span><span class="p">)</span> <span class="p">}</span> 957 <span class="p">}</span> 958 </pre></div> 959 960 961 <p><strong>Note:</strong> 962 If the reference should be only a single item, rather than a slice (or collection) 963 of items, omit the <code>[]</code>, changing the command to:</p> 964 <div class="codehilite"><pre><span></span>$ ponzu gen content catalog year:int product:@product,title,price 965 </pre></div> 966 967 968 969 970 971 972 973 </article> 974 </div> 975 </div> 976 </main> 977 978 979 <footer class="md-footer"> 980 981 <div class="md-footer-nav"> 982 <nav class="md-footer-nav__inner md-grid"> 983 984 <a href="../General-Usage/" title="General Usage" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> 985 <div class="md-flex__cell md-flex__cell--shrink"> 986 <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> 987 </div> 988 <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> 989 <span class="md-flex__ellipsis"> 990 <span class="md-footer-nav__direction"> 991 Previous 992 </span> 993 General Usage 994 </span> 995 </div> 996 </a> 997 998 999 <a href="../../Content/An-Overview/" title="An Overview" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> 1000 <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> 1001 <span class="md-flex__ellipsis"> 1002 <span class="md-footer-nav__direction"> 1003 Next 1004 </span> 1005 An Overview 1006 </span> 1007 </div> 1008 <div class="md-flex__cell md-flex__cell--shrink"> 1009 <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> 1010 </div> 1011 </a> 1012 1013 </nav> 1014 </div> 1015 1016 <div class="md-footer-meta md-typeset"> 1017 <div class="md-footer-meta__inner md-grid"> 1018 <div class="md-footer-copyright"> 1019 1020 powered by 1021 <a href="http://www.mkdocs.org" title="MkDocs">MkDocs</a> 1022 and 1023 <a href="http://squidfunk.github.io/mkdocs-material/" title="Material for MkDocs"> 1024 Material for MkDocs</a> 1025 </div> 1026 1027 1028 <div class="md-footer-social"> 1029 1030 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> 1031 1032 <a href="https://github.com/rpdict" class="md-footer-social__link fa fa-github"></a> 1033 1034 <a href="https://twitter.com/ponzu_cms" class="md-footer-social__link fa fa-twitter"></a> 1035 1036 </div> 1037 1038 1039 </div> 1040 </div> 1041 </footer> 1042 1043 </div> 1044 1045 <script src="../../assets/javascripts/application-6b599127bc.js"></script> 1046 <script>app.initialize({url:{base:"../.."}})</script> 1047 1048 1049 1050 1051 <script>!function(e,t,a,n,o,c,i){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,c=t.createElement(a),i=t.getElementsByTagName(a)[0],c.async=1,c.src=n,i.parentNode.insertBefore(c,i)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-98609560-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var t=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",t,e.href)})});var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})</script> 1052 1053 1054 </body> 1055 </html>